const qboolean cvar_readonly; gl_extension_func_t * const funcs; // constant pointer to array of functions const size_t offset; // offset to respective variable const size_t depOffset; // offset to required pre-initialized variable } gl_extension_t; #define GL_EXTENSION_FUNC_EXT(name,func) { name, (void ** const)func } #define GL_EXTENSION_FUNC(name) GL_EXTENSION_FUNC_EXT("gl"#name,&(qgl##name)) /* GL_ARB_multitexture */ static const gl_extension_func_t gl_ext_multitexture_ARB_funcs[] = { GL_EXTENSION_FUNC(ActiveTextureARB) ,GL_EXTENSION_FUNC(ClientActiveTextureARB) ,GL_EXTENSION_FUNC_EXT(NULL,NULL) }; /* GL_EXT_compiled_vertex_array */ static const gl_extension_func_t gl_ext_compiled_vertex_array_EXT_funcs[] = { GL_EXTENSION_FUNC(LockArraysEXT) ,GL_EXTENSION_FUNC(UnlockArraysEXT) ,GL_EXTENSION_FUNC_EXT(NULL,NULL) }; /* GL_ARB_vertex_buffer_object */ static const gl_extension_func_t gl_ext_vertex_buffer_object_ARB_funcs[] = { GL_EXTENSION_FUNC(BindBufferARB)
qboolean mandatory; gl_extension_func_t *funcs; // constant pointer to array of functions size_t offset; // offset to respective variable size_t depOffset; // offset to required pre-initialized variable } gl_extension_t; #define GL_EXTENSION_FUNC_EXT(name,func) { name, (void ** const)func } #define GL_EXTENSION_FUNC(name) GL_EXTENSION_FUNC_EXT("gl"#name,&(qgl##name)) /* GL_ARB_multitexture */ static const gl_extension_func_t gl_ext_multitexture_ARB_funcs[] = { GL_EXTENSION_FUNC(ActiveTextureARB) ,GL_EXTENSION_FUNC(ClientActiveTextureARB) ,GL_EXTENSION_FUNC_EXT(NULL,NULL) }; /* GL_ARB_vertex_buffer_object */ static const gl_extension_func_t gl_ext_vertex_buffer_object_ARB_funcs[] = { GL_EXTENSION_FUNC(BindBufferARB) ,GL_EXTENSION_FUNC(DeleteBuffersARB) ,GL_EXTENSION_FUNC(GenBuffersARB) ,GL_EXTENSION_FUNC(BufferDataARB) ,GL_EXTENSION_FUNC(BufferSubDataARB) ,GL_EXTENSION_FUNC_EXT(NULL,NULL) }; /* GL_EXT_draw_range_elements */