inline void VL_glFogCoordPointer( GLenum type, GLsizei stride, GLvoid* pointer ) { if (glFogCoordPointer) glFogCoordPointer(type,stride,pointer); else if (glFogCoordPointerEXT) glFogCoordPointerEXT(type,stride,pointer); else VL_UNSUPPORTED_FUNC(); }
inline void VL_glFogCoordPointer( GLenum type, GLsizei stride, GLvoid* pointer ) { #ifdef GL_VERSION_1_4_DEPRECATED if (glFogCoordPointer) glFogCoordPointer(type,stride,pointer); else #endif if (glFogCoordPointerEXT) glFogCoordPointerEXT(type,stride,pointer); else VL_UNSUPPORTED_FUNC(); }
static void Init(void) { static const GLubyte teximage[2][2][4] = { { { 255, 255, 255, 255}, { 128, 128, 128, 255} }, { { 128, 128, 128, 255}, { 255, 255, 255, 255} } }; printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); if (!GLEW_EXT_fog_coord) { printf("GL_EXT_fog_coord not supported!\n"); } glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, teximage); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glClearColor(0.1f, 0.1f, 0.1f, 0.0f); glDepthFunc(GL_LEQUAL); glEnable(GL_DEPTH_TEST); glShadeModel(GL_SMOOTH); glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); glFogfv(GL_FOG_COLOR, fogColor); glHint(GL_FOG_HINT, GL_NICEST); fogCoord = SetFogCoord(GL_TRUE); /* try to enable fog_coord */ fogMode = SetFogMode(1); glEnableClientState(GL_VERTEX_ARRAY); glVertexPointer(3, GL_FLOAT, 0, vertex_pointer); glEnableClientState(GL_TEXTURE_COORD_ARRAY); glTexCoordPointer(2, GL_FLOAT, 0, texcoord_pointer); if (GLEW_EXT_fog_coord) { glEnableClientState(GL_FOG_COORDINATE_ARRAY_EXT); glFogCoordPointerEXT(GL_FLOAT, 0, fogcoord_pointer); } Reset(); }
static void va_render () { GLint i; for (i = 0; i < sizeof (attribs) / sizeof (*attribs); i++) { struct ATTRIB_DATA *att = &attribs[i]; switch (att->dispatch) { case C: glColorPointer (4, GL_FLOAT, 0, att->data); glEnable (GL_COLOR_ARRAY); break; case S: glSecondaryColorPointerEXT (4, GL_FLOAT, 0, att->data); glEnable (GL_SECONDARY_COLOR_ARRAY_EXT); break; case N: glNormalPointer (GL_FLOAT, 0, att->data); glEnable (GL_NORMAL_ARRAY); break; case V: glVertexPointer (4, GL_FLOAT, 0, att->data); glEnable (GL_VERTEX_ARRAY); break; case T: assert (att->index >= 0 && att->index < 8); glClientActiveTextureARB (GL_TEXTURE0_ARB + att->index); glTexCoordPointer (4, GL_FLOAT, 0, att->data); glEnable (GL_TEXTURE_COORD_ARRAY); break; case F: glFogCoordPointerEXT (GL_FLOAT, 0, att->data); glEnable (GL_FOG_COORDINATE_ARRAY_EXT); break; case A: assert (att->index > 0 && att->index < 16); glVertexAttribPointerARB (att->index, 4, GL_FLOAT, GL_FALSE, 0, att->data); glEnableVertexAttribArrayARB (att->index); break; default: assert (0); } } glDrawArrays (GL_POINTS, 0, 1); for (i = 0; i < sizeof (attribs) / sizeof (*attribs); i++) { struct ATTRIB_DATA *att = &attribs[i]; switch (att->dispatch) { case C: glDisable (GL_COLOR_ARRAY); break; case S: glDisable (GL_SECONDARY_COLOR_ARRAY_EXT); break; case N: glDisable (GL_NORMAL_ARRAY); break; case V: glDisable (GL_VERTEX_ARRAY); break; case T: glClientActiveTextureARB (GL_TEXTURE0_ARB + att->index); glDisable (GL_TEXTURE_COORD_ARRAY); break; case F: glDisable (GL_FOG_COORDINATE_ARRAY_EXT); break; case A: glDisableVertexAttribArrayARB (att->index); break; default: assert (0); } } }