/* * Macros used in this file: * NAME(x) Name of the function * TYPE Type to use * TYPEIDX Type constant (FLAG_BYTE, FLAG_UBYTE, etc) */ void cgl_GLVertex4f(struct GLContextIFace *Self, GLfloat x, GLfloat y, GLfloat z, GLfloat w); static void NAME(vertex_element_2)(GLcontext context, struct GLarray_t *array, GLuint i, GLuint unit) { TYPE *cur = (TYPE *)((uint8 *)array->pointer + array->stride * i); cgl_GLVertex4f(context->Self,(GLfloat)cur[0], (GLfloat)cur[1], 0.0, 1.0); }; static void NAME(vertex_element_3)(GLcontext context, struct GLarray_t *array, GLuint i, GLuint unit) { TYPE *cur = (TYPE *)((uint8 *)array->pointer + array->stride * i); cgl_GLVertex4f(context->Self,(GLfloat)cur[0], (GLfloat)cur[1], (GLfloat)cur[2], 1.0); }; static void NAME(vertex_element_4)(GLcontext context, struct GLarray_t *array, GLuint i, GLuint unit) { TYPE *cur = (TYPE *)((uint8 *)array->pointer + array->stride * i); cgl_GLVertex4f(context->Self,(GLfloat)cur[0], (GLfloat)cur[1], (GLfloat)cur[2], (GLfloat)cur[3]); }; static void NAME(vertex_fetch_2)(GLcontext context, struct GLarray_t *array, GLvoid *pos, GLuint unit) { TYPE *cur = (TYPE *)pos; THIS_VERTEX.object.x = (GLfloat)cur[0]; THIS_VERTEX.object.y = (GLfloat)cur[1]; THIS_VERTEX.object.z = 0.0; THIS_VERTEX.object.w = 1.0; } static void NAME(vertex_fetch_3)(GLcontext context, struct GLarray_t *array, GLvoid *pos, GLuint unit) { TYPE *cur = (TYPE *)pos; THIS_VERTEX.object.x = (GLfloat)cur[0]; THIS_VERTEX.object.y = (GLfloat)cur[1]; THIS_VERTEX.object.z = (GLfloat)cur[2]; THIS_VERTEX.object.w = 1.0; } static void NAME(vertex_fetch_4)(GLcontext context, struct GLarray_t *array, GLvoid *pos, GLuint unit) { TYPE *cur = (TYPE *)pos; THIS_VERTEX.object.x = (GLfloat)cur[0]; THIS_VERTEX.object.y = (GLfloat)cur[1]; THIS_VERTEX.object.z = (GLfloat)cur[2]; THIS_VERTEX.object.w = (GLfloat)cur[3]; } static void NAME(vertex_fetch_idx_2)(GLcontext context, struct GLarray_t *array, GLuint i, GLuint unit) { TYPE *cur = (TYPE *)((uint8 *)array->pointer + array->stride * i); THIS_VERTEX.object.x = (GLfloat)cur[0]; THIS_VERTEX.object.y = (GLfloat)cur[1]; THIS_VERTEX.object.z = 0.0; THIS_VERTEX.object.w = 1.0; } static void NAME(vertex_fetch_idx_3)(GLcontext context, struct GLarray_t *array, GLuint i, GLuint unit) { TYPE *cur = (TYPE *)((uint8 *)array->pointer + array->stride * i); THIS_VERTEX.object.x = (GLfloat)cur[0]; THIS_VERTEX.object.y = (GLfloat)cur[1]; THIS_VERTEX.object.z = (GLfloat)cur[2]; THIS_VERTEX.object.w = 1.0; } static void NAME(vertex_fetch_idx_4)(GLcontext context, struct GLarray_t *array, GLuint i, GLuint unit) { TYPE *cur = (TYPE *)((uint8 *)array->pointer + array->stride * i); THIS_VERTEX.object.x = (GLfloat)cur[0]; THIS_VERTEX.object.y = (GLfloat)cur[1]; THIS_VERTEX.object.z = (GLfloat)cur[2]; THIS_VERTEX.object.w = (GLfloat)cur[3]; } static void NAME(vertex_init)(void) { vertex_fetchElement[TYPEIDX|FLAG_2] = NAME(vertex_element_2); vertex_fetchElement[TYPEIDX|FLAG_3] = NAME(vertex_element_3); vertex_fetchElement[TYPEIDX|FLAG_4] = NAME(vertex_element_4); vertex_fetch[TYPEIDX|FLAG_2] = NAME(vertex_fetch_2); vertex_fetch[TYPEIDX|FLAG_3] = NAME(vertex_fetch_3); vertex_fetch[TYPEIDX|FLAG_4] = NAME(vertex_fetch_4); vertex_fetchIdx[TYPEIDX|FLAG_2] = NAME(vertex_fetch_idx_2); vertex_fetchIdx[TYPEIDX|FLAG_3] = NAME(vertex_fetch_idx_3); vertex_fetchIdx[TYPEIDX|FLAG_4] = NAME(vertex_fetch_idx_4); } #undef NAME #undef TYPE #undef TYPEIDX