From bc9063582a5b12986a3f70b4eaa9ffaf1568f735 Mon Sep 17 00:00:00 2001 From: havoc Date: Tue, 5 Jan 2010 09:33:35 +0000 Subject: [PATCH] remove support for GL_EXT_compiled_vertex_array extension git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@9782 d7cf8633-e32d-0410-b094-e92efae38249 --- cl_particles.c | 4 ---- gl_backend.c | 31 ------------------------------- gl_backend.h | 3 --- gl_draw.c | 14 -------------- gl_rmain.c | 19 ------------------- gl_rsurf.c | 1 - glquake.h | 4 ---- r_explosion.c | 2 -- r_shadow.c | 4 ---- vid.h | 1 - vid_shared.c | 13 ------------- 11 files changed, 96 deletions(-) diff --git a/cl_particles.c b/cl_particles.c index d0846c0d..1fb4623c 100644 --- a/cl_particles.c +++ b/cl_particles.c @@ -2284,9 +2284,7 @@ void R_DrawDecal_TransparentCallback(const entity_render_t *ent, const rtlight_t // (this assumes they all use one particle font texture!) GL_BlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_COLOR); R_SetupShader_Generic(particletexture[63].texture, NULL, GL_MODULATE, 1); - GL_LockArrays(0, numsurfaces*4); R_Mesh_Draw(0, numsurfaces * 4, 0, numsurfaces * 2, NULL, particle_elements, 0, 0); - GL_LockArrays(0, 0); } void R_DrawDecals (void) @@ -2550,7 +2548,6 @@ void R_DrawParticle_TransparentCallback(const entity_render_t *ent, const rtligh // now render batches of particles based on blendmode and texture blendmode = PBLEND_INVALID; texture = NULL; - GL_LockArrays(0, numsurfaces*4); batchstart = 0; batchcount = 0; for (surfacelistindex = 0;surfacelistindex < numsurfaces;) @@ -2592,7 +2589,6 @@ void R_DrawParticle_TransparentCallback(const entity_render_t *ent, const rtligh batchcount = surfacelistindex - batchstart; R_Mesh_Draw(batchstart * 4, batchcount * 4, batchstart * 2, batchcount * 2, NULL, particle_elements, 0, 0); } - GL_LockArrays(0, 0); } void R_DrawParticles (void) diff --git a/gl_backend.c b/gl_backend.c index 4cbcce2e..ec1e5483 100644 --- a/gl_backend.c +++ b/gl_backend.c @@ -14,8 +14,6 @@ cvar_t r_renderview = {0, "r_renderview", "1", "enables rendering 3D views (you cvar_t r_waterwarp = {CVAR_SAVE, "r_waterwarp", "1", "warp view while underwater"}; cvar_t gl_polyblend = {CVAR_SAVE, "gl_polyblend", "1", "tints view while underwater, hurt, etc"}; cvar_t gl_dither = {CVAR_SAVE, "gl_dither", "1", "enables OpenGL dithering (16bit looks bad with this off)"}; -cvar_t gl_lockarrays = {0, "gl_lockarrays", "0", "enables use of glLockArraysEXT, may cause glitches with some broken drivers, and may be slower than normal"}; -cvar_t gl_lockarrays_minimumvertices = {0, "gl_lockarrays_minimumvertices", "1", "minimum number of vertices required for use of glLockArraysEXT, setting this too low may reduce performance"}; cvar_t gl_vbo = {CVAR_SAVE, "gl_vbo", "3", "make use of GL_ARB_vertex_buffer_object extension to store static geometry in video memory for faster rendering, 0 disables VBO allocation or use, 1 enables VBOs for vertex and triangle data, 2 only for vertex data, 3 for vertex data and triangle data of simple meshes (ones with only one surface)"}; cvar_t gl_fbo = {CVAR_SAVE, "gl_fbo", "1", "make use of GL_ARB_framebuffer_object extension to enable shadowmaps and other features using pixel formats different from the framebuffer"}; @@ -282,8 +280,6 @@ void gl_backend_init(void) Cvar_RegisterVariable(&gl_polyblend); Cvar_RegisterVariable(&v_flipped); Cvar_RegisterVariable(&gl_dither); - Cvar_RegisterVariable(&gl_lockarrays); - Cvar_RegisterVariable(&gl_lockarrays_minimumvertices); Cvar_RegisterVariable(&gl_vbo); Cvar_RegisterVariable(&gl_paranoid); Cvar_RegisterVariable(&gl_printcheckerror); @@ -981,33 +977,6 @@ void GL_Color(float cr, float cg, float cb, float ca) } } -void GL_LockArrays(int first, int count) -{ - if (count < gl_lockarrays_minimumvertices.integer) - { - first = 0; - count = 0; - } - if (gl_state.lockrange_count != count || gl_state.lockrange_first != first) - { - if (gl_state.lockrange_count) - { - gl_state.lockrange_count = 0; - CHECKGLERROR - qglUnlockArraysEXT(); - CHECKGLERROR - } - if (count && vid.support.ext_compiled_vertex_array && gl_lockarrays.integer) - { - gl_state.lockrange_first = first; - gl_state.lockrange_count = count; - CHECKGLERROR - qglLockArraysEXT(first, count); - CHECKGLERROR - } - } -} - void GL_Scissor (int x, int y, int width, int height) { CHECKGLERROR diff --git a/gl_backend.h b/gl_backend.h index 72f2bc46..cea789ce 100644 --- a/gl_backend.h +++ b/gl_backend.h @@ -37,7 +37,6 @@ void GL_CullFace(int state); void GL_AlphaTest(int state); void GL_ColorMask(int r, int g, int b, int a); void GL_Color(float cr, float cg, float cb, float ca); -void GL_LockArrays(int first, int count); void GL_ActiveTexture(unsigned int num); void GL_ClientActiveTexture(unsigned int num); void GL_Scissor(int x, int y, int width, int height); @@ -47,8 +46,6 @@ void GL_Clear(int mask); unsigned int GL_Backend_CompileProgram(int vertexstrings_count, const char **vertexstrings_list, int geometrystrings_count, const char **geometrystrings_list, int fragmentstrings_count, const char **fragmentstrings_list); void GL_Backend_FreeProgram(unsigned int prog); -extern cvar_t gl_lockarrays; -extern cvar_t gl_mesh_copyarrays; extern cvar_t gl_paranoid; extern cvar_t gl_printcheckerror; diff --git a/gl_draw.c b/gl_draw.c index a18e59cd..da593501 100644 --- a/gl_draw.c +++ b/gl_draw.c @@ -1467,9 +1467,7 @@ float DrawQ_String_Scale(float startx, float starty, const char *text, size_t ma if (batchcount) { // switching from freetype to non-freetype rendering - GL_LockArrays(0, batchcount * 4); R_Mesh_Draw(0, batchcount * 4, 0, batchcount * 2, quadelement3i, quadelement3s, 0, 0); - GL_LockArrays(0, 0); batchcount = 0; ac = color4f; at = texcoord2f; @@ -1506,9 +1504,7 @@ float DrawQ_String_Scale(float startx, float starty, const char *text, size_t ma batchcount++; if (batchcount >= QUADELEMENTS_MAXQUADS) { - GL_LockArrays(0, batchcount * 4); R_Mesh_Draw(0, batchcount * 4, 0, batchcount * 2, quadelement3i, quadelement3s, 0, 0); - GL_LockArrays(0, 0); batchcount = 0; ac = color4f; at = texcoord2f; @@ -1522,9 +1518,7 @@ float DrawQ_String_Scale(float startx, float starty, const char *text, size_t ma if (batchcount) { // we need a different character map, render what we currently have: - GL_LockArrays(0, batchcount * 4); R_Mesh_Draw(0, batchcount * 4, 0, batchcount * 2, quadelement3i, quadelement3s, 0, 0); - GL_LockArrays(0, 0); batchcount = 0; ac = color4f; at = texcoord2f; @@ -1583,9 +1577,7 @@ float DrawQ_String_Scale(float startx, float starty, const char *text, size_t ma batchcount++; if (batchcount >= QUADELEMENTS_MAXQUADS) { - GL_LockArrays(0, batchcount * 4); R_Mesh_Draw(0, batchcount * 4, 0, batchcount * 2, quadelement3i, quadelement3s, 0, 0); - GL_LockArrays(0, 0); batchcount = 0; ac = color4f; at = texcoord2f; @@ -1603,11 +1595,7 @@ float DrawQ_String_Scale(float startx, float starty, const char *text, size_t ma } } if (batchcount > 0) - { - GL_LockArrays(0, batchcount * 4); R_Mesh_Draw(0, batchcount * 4, 0, batchcount * 2, quadelement3i, quadelement3s, 0, 0); - GL_LockArrays(0, 0); - } if (outcolor) *outcolor = colorindex; @@ -1724,9 +1712,7 @@ void DrawQ_Mesh (drawqueuemesh_t *mesh, int flags) R_Mesh_TexCoordPointer(0, 2, mesh->data_texcoord2f, 0, 0); R_SetupShader_Generic(mesh->texture, NULL, GL_MODULATE, 1); - GL_LockArrays(0, mesh->num_vertices); R_Mesh_Draw(0, mesh->num_vertices, 0, mesh->num_triangles, mesh->data_element3i, mesh->data_element3s, 0, 0); - GL_LockArrays(0, 0); } void DrawQ_LineLoop (drawqueuemesh_t *mesh, int flags) diff --git a/gl_rmain.c b/gl_rmain.c index a8467a3e..7eee0963 100644 --- a/gl_rmain.c +++ b/gl_rmain.c @@ -9665,10 +9665,7 @@ void RSurf_DrawBatch_Simple(int texturenumsurfaces, const msurface_t **texturesu int numtriangles; // TODO: lock all array ranges before render, rather than on each surface if (texturenumsurfaces == 1) - { - GL_LockArrays(surface->num_firstvertex, surface->num_vertices); R_Mesh_Draw(surface->num_firstvertex, surface->num_vertices, surface->num_firsttriangle, surface->num_triangles, rsurface.modelelement3i, rsurface.modelelement3s, rsurface.modelelement3i_bufferobject, rsurface.modelelement3s_bufferobject); - } else if (r_batchmode.integer == 2) { #define MAXBATCHTRIANGLES 4096 @@ -9713,7 +9710,6 @@ void RSurf_DrawBatch_Simple(int texturenumsurfaces, const msurface_t **texturesu surface2 = texturesurfacelist[j-1]; numvertices = surface2->num_firstvertex + surface2->num_vertices - surface->num_firstvertex; numtriangles = surface2->num_firsttriangle + surface2->num_triangles - surface->num_firsttriangle; - GL_LockArrays(surface->num_firstvertex, numvertices); R_Mesh_Draw(surface->num_firstvertex, numvertices, surface->num_firsttriangle, numtriangles, rsurface.modelelement3i, rsurface.modelelement3s, rsurface.modelelement3i_bufferobject, rsurface.modelelement3s_bufferobject); } } @@ -9722,7 +9718,6 @@ void RSurf_DrawBatch_Simple(int texturenumsurfaces, const msurface_t **texturesu for (i = 0;i < texturenumsurfaces;i++) { surface = texturesurfacelist[i]; - GL_LockArrays(surface->num_firstvertex, surface->num_vertices); R_Mesh_Draw(surface->num_firstvertex, surface->num_vertices, surface->num_firsttriangle, surface->num_triangles, rsurface.modelelement3i, rsurface.modelelement3s, rsurface.modelelement3i_bufferobject, rsurface.modelelement3s_bufferobject); } } @@ -9802,7 +9797,6 @@ static void RSurf_DrawBatch_WithLightmapSwitching_WithWaterTextureSwitching(int surface = texturesurfacelist[i]; RSurf_BindLightmapForSurface(surface); RSurf_BindReflectionForSurface(surface); - GL_LockArrays(surface->num_firstvertex, surface->num_vertices); R_Mesh_Draw(surface->num_firstvertex, surface->num_vertices, surface->num_firsttriangle, surface->num_triangles, rsurface.modelelement3i, rsurface.modelelement3s, rsurface.modelelement3i_bufferobject, rsurface.modelelement3s_bufferobject); } } @@ -9820,7 +9814,6 @@ static void RSurf_DrawBatch_WithLightmapSwitching(int texturenumsurfaces, const if (texturenumsurfaces == 1) { RSurf_BindLightmapForSurface(surface); - GL_LockArrays(surface->num_firstvertex, surface->num_vertices); R_Mesh_Draw(surface->num_firstvertex, surface->num_vertices, surface->num_firsttriangle, surface->num_triangles, rsurface.modelelement3i, rsurface.modelelement3s, rsurface.modelelement3i_bufferobject, rsurface.modelelement3s_bufferobject); } else if (r_batchmode.integer == 2) @@ -9885,7 +9878,6 @@ static void RSurf_DrawBatch_WithLightmapSwitching(int texturenumsurfaces, const surface2 = texturesurfacelist[j-1]; numvertices = surface2->num_firstvertex + surface2->num_vertices - surface->num_firstvertex; numtriangles = surface2->num_firsttriangle + surface2->num_triangles - surface->num_firsttriangle; - GL_LockArrays(surface->num_firstvertex, numvertices); R_Mesh_Draw(surface->num_firstvertex, numvertices, surface->num_firsttriangle, numtriangles, rsurface.modelelement3i, rsurface.modelelement3s, rsurface.modelelement3i_bufferobject, rsurface.modelelement3s_bufferobject); } #if 0 @@ -9898,7 +9890,6 @@ static void RSurf_DrawBatch_WithLightmapSwitching(int texturenumsurfaces, const { surface = texturesurfacelist[i]; RSurf_BindLightmapForSurface(surface); - GL_LockArrays(surface->num_firstvertex, surface->num_vertices); R_Mesh_Draw(surface->num_firstvertex, surface->num_vertices, surface->num_firsttriangle, surface->num_triangles, rsurface.modelelement3i, rsurface.modelelement3s, rsurface.modelelement3i_bufferobject, rsurface.modelelement3s_bufferobject); } } @@ -9928,7 +9919,6 @@ static void RSurf_DrawBatch_ShowSurfaces(int texturenumsurfaces, const msurface_ const msurface_t *surface = texturesurfacelist[texturesurfaceindex]; int k = (int)(((size_t)surface) / sizeof(msurface_t)); GL_Color((k & 15) * (1.0f / 16.0f) * r_refdef.view.colorscale, ((k >> 4) & 15) * (1.0f / 16.0f) * r_refdef.view.colorscale, ((k >> 8) & 15) * (1.0f / 16.0f) * r_refdef.view.colorscale, 1); - GL_LockArrays(surface->num_firstvertex, surface->num_vertices); R_Mesh_Draw(surface->num_firstvertex, surface->num_vertices, surface->num_firsttriangle, surface->num_triangles, rsurface.modelelement3i, rsurface.modelelement3s, rsurface.modelelement3i_bufferobject, rsurface.modelelement3s_bufferobject); } } @@ -10303,7 +10293,6 @@ static void R_DrawTextureSurfaceList_GL20(int texturenumsurfaces, const msurface GL_DepthMask(true); R_SetupShader_Surface(vec3_origin, (rsurface.texture->currentmaterialflags & MATERIALFLAG_MODELLIGHT) != 0, 1, 1, rsurface.texture->specularscale, prepass ? RSURFPASS_DEFERREDGEOMETRY : RSURFPASS_BASE); RSurf_DrawBatch_Simple(texturenumsurfaces, texturesurfacelist); - GL_LockArrays(0, 0); } else if ((rsurface.texture->currentmaterialflags & (MATERIALFLAG_WATERSHADER | MATERIALFLAG_REFRACTION)) && !r_waterstate.renderingscene) { @@ -10311,11 +10300,9 @@ static void R_DrawTextureSurfaceList_GL20(int texturenumsurfaces, const msurface GL_DepthMask(true); R_SetupShader_Surface(vec3_origin, (rsurface.texture->currentmaterialflags & MATERIALFLAG_MODELLIGHT) != 0, 1, 1, rsurface.texture->specularscale, RSURFPASS_BACKGROUND); RSurf_DrawBatch_WithLightmapSwitching_WithWaterTextureSwitching(texturenumsurfaces, texturesurfacelist); - GL_LockArrays(0, 0); GL_DepthMask(false); R_SetupShader_Surface(vec3_origin, (rsurface.texture->currentmaterialflags & MATERIALFLAG_MODELLIGHT) != 0, 1, 1, rsurface.texture->specularscale, prepass ? RSURFPASS_DEFERREDGEOMETRY : RSURFPASS_BASE); RSurf_DrawBatch_WithLightmapSwitching_WithWaterTextureSwitching(texturenumsurfaces, texturesurfacelist); - GL_LockArrays(0, 0); } else { @@ -10328,7 +10315,6 @@ static void R_DrawTextureSurfaceList_GL20(int texturenumsurfaces, const msurface RSurf_DrawBatch_WithLightmapSwitching(texturenumsurfaces, texturesurfacelist); else RSurf_DrawBatch_Simple(texturenumsurfaces, texturesurfacelist); - GL_LockArrays(0, 0); } } @@ -10445,7 +10431,6 @@ static void R_DrawTextureSurfaceList_GL13(int texturenumsurfaces, const msurface default: Con_Printf("R_DrawTextureSurfaceList: unknown layer type %i\n", layer->type); } - GL_LockArrays(0, 0); } CHECKGLERROR if (rsurface.texture->currentmaterialflags & MATERIALFLAG_ALPHATEST) @@ -10497,7 +10482,6 @@ static void R_DrawTextureSurfaceList_GL11(int texturenumsurfaces, const msurface RSurf_DrawBatch_GL11_Lightmap(texturenumsurfaces, texturesurfacelist, 1, 1, 1, 1, false, false); else RSurf_DrawBatch_GL11_VertexColor(texturenumsurfaces, texturesurfacelist, 1, 1, 1, 1, false, false); - GL_LockArrays(0, 0); // then apply the texture to it GL_BlendFunc(GL_DST_COLOR, GL_SRC_COLOR); R_Mesh_TexBind(0, layer->texture); @@ -10564,7 +10548,6 @@ static void R_DrawTextureSurfaceList_GL11(int texturenumsurfaces, const msurface default: Con_Printf("R_DrawTextureSurfaceList: unknown layer type %i\n", layer->type); } - GL_LockArrays(0, 0); } CHECKGLERROR if (rsurface.texture->currentmaterialflags & MATERIALFLAG_ALPHATEST) @@ -11697,9 +11680,7 @@ static void R_DrawModelDecals_Entity(entity_render_t *ent) GL_CullFace(GL_NONE); GL_BlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_COLOR); R_SetupShader_Generic(decalskinframe->base, NULL, GL_MODULATE, 1); - GL_LockArrays(0, numtris * 3); R_Mesh_Draw(0, numtris * 3, 0, numtris, decalsystem->element3i, decalsystem->element3s, 0, 0); - GL_LockArrays(0, 0); } } diff --git a/gl_rsurf.c b/gl_rsurf.c index 96f2bc8a..9478d237 100644 --- a/gl_rsurf.c +++ b/gl_rsurf.c @@ -1132,7 +1132,6 @@ void R_Q1BSP_DrawShadowMap(int side, entity_render_t *ent, const vec3_t relative GL_CullFace(rsurface.texture->currentmaterialflags & MATERIALFLAG_NOCULLFACE ? GL_NONE : r_refdef.view.cullface_back); RSurf_PrepareVerticesForBatch(false, false, batchsize, batch); RSurf_DrawBatch_Simple(batchsize, batch); - GL_LockArrays(0, 0); } } diff --git a/glquake.h b/glquake.h index 0385511e..bd3e133c 100644 --- a/glquake.h +++ b/glquake.h @@ -336,10 +336,6 @@ extern void (GLAPIENTRY *qglClientActiveTexture) (GLenum); #define GL_TEXTURE31_ARB 0x84DF #endif -// GL_EXT_compiled_vertex_array -extern void (GLAPIENTRY *qglLockArraysEXT) (GLint first, GLint count); -extern void (GLAPIENTRY *qglUnlockArraysEXT) (void); - // GL_ARB_texture_env_combine #ifndef GL_COMBINE_ARB #define GL_COMBINE_ARB 0x8570 diff --git a/r_explosion.c b/r_explosion.c index e26ba58a..ecb83f17 100644 --- a/r_explosion.c +++ b/r_explosion.c @@ -222,9 +222,7 @@ static void R_DrawExplosion_TransparentCallback(const entity_render_t *ent, cons R_Mesh_VertexPointer(e->vert[0], 0, 0); // FIXME: fixed function path can't properly handle r_refdef.view.colorscale > 1 GL_Color(e->alpha * r_refdef.view.colorscale, e->alpha * r_refdef.view.colorscale, e->alpha * r_refdef.view.colorscale, 1); - GL_LockArrays(0, numverts); R_Mesh_Draw(0, numverts, 0, numtriangles, NULL, explosiontris[0], 0, 0); - GL_LockArrays(0, 0); } } diff --git a/r_shadow.c b/r_shadow.c index a1f490b8..56c387f9 100644 --- a/r_shadow.c +++ b/r_shadow.c @@ -1330,7 +1330,6 @@ void R_Shadow_VolumeFromList(int numverts, int numtris, const float *invertex3f, r_refdef.stats.lights_shadowtriangles += tris; CHECKGLERROR R_Mesh_VertexPointer(shadowvertex3f, 0, 0); - GL_LockArrays(0, outverts); if (r_shadow_rendermode == R_SHADOW_RENDERMODE_ZPASS_STENCIL) { // increment stencil if frontface is infront of depthbuffer @@ -1352,7 +1351,6 @@ void R_Shadow_VolumeFromList(int numverts, int numtris, const float *invertex3f, qglStencilOp(GL_KEEP, GL_INCR, GL_KEEP);CHECKGLERROR } R_Mesh_Draw(0, outverts, 0, tris, shadowelements, NULL, 0, 0); - GL_LockArrays(0, 0); CHECKGLERROR } } @@ -3303,7 +3301,6 @@ void R_Shadow_DrawWorldShadow_ShadowVolume(int numsurfaces, int *surfacelist, co { r_refdef.stats.lights_shadowtriangles += mesh->numtriangles; R_Mesh_VertexPointer(mesh->vertex3f, mesh->vbo, mesh->vbooffset_vertex3f); - GL_LockArrays(0, mesh->numverts); if (r_shadow_rendermode == R_SHADOW_RENDERMODE_ZPASS_STENCIL) { // increment stencil if frontface is infront of depthbuffer @@ -3325,7 +3322,6 @@ void R_Shadow_DrawWorldShadow_ShadowVolume(int numsurfaces, int *surfacelist, co qglStencilOp(GL_KEEP, GL_INCR, GL_KEEP);CHECKGLERROR } R_Mesh_Draw(0, mesh->numverts, 0, mesh->numtriangles, mesh->element3i, mesh->element3s, mesh->ebo3i, mesh->ebo3s); - GL_LockArrays(0, 0); } CHECKGLERROR } diff --git a/vid.h b/vid.h index b0c3b626..52331ae4 100644 --- a/vid.h +++ b/vid.h @@ -59,7 +59,6 @@ typedef struct viddef_support_s qboolean ati_separate_stencil; qboolean ext_blend_minmax; qboolean ext_blend_subtract; - qboolean ext_compiled_vertex_array; qboolean ext_draw_range_elements; qboolean ext_framebuffer_object; qboolean ext_stencil_two_side; diff --git a/vid_shared.c b/vid_shared.c index 397f590f..4579c143 100644 --- a/vid_shared.c +++ b/vid_shared.c @@ -110,10 +110,6 @@ void (GLAPIENTRY *qglMultiTexCoord4f) (GLenum, GLfloat, GLfloat, GLfloat, GLfloa void (GLAPIENTRY *qglActiveTexture) (GLenum); void (GLAPIENTRY *qglClientActiveTexture) (GLenum); -// GL_EXT_compiled_vertex_array -void (GLAPIENTRY *qglLockArraysEXT) (GLint first, GLint count); -void (GLAPIENTRY *qglUnlockArraysEXT) (void); - // general GL functions void (GLAPIENTRY *qglClearColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); @@ -593,13 +589,6 @@ static dllfunction_t multitexturefuncs[] = {NULL, NULL} }; -static dllfunction_t compiledvertexarrayfuncs[] = -{ - {"glLockArraysEXT", (void **) &qglLockArraysEXT}, - {"glUnlockArraysEXT", (void **) &qglUnlockArraysEXT}, - {NULL, NULL} -}; - static dllfunction_t texture3dextfuncs[] = { {"glTexImage3DEXT", (void **) &qglTexImage3D}, @@ -829,7 +818,6 @@ void VID_CheckExtensions(void) vid.support.ati_separate_stencil = GL_CheckExtension("2.0", gl2separatestencilfuncs, "-noseparatestencil", true) || GL_CheckExtension("GL_ATI_separate_stencil", atiseparatestencilfuncs, "-noseparatestencil", false); vid.support.ext_blend_minmax = GL_CheckExtension("GL_EXT_blend_minmax", blendequationfuncs, "-noblendminmax", false); vid.support.ext_blend_subtract = GL_CheckExtension("GL_EXT_blend_subtract", blendequationfuncs, "-noblendsubtract", false); - vid.support.ext_compiled_vertex_array = GL_CheckExtension("GL_EXT_compiled_vertex_array", compiledvertexarrayfuncs, "-nocva", false); vid.support.ext_draw_range_elements = GL_CheckExtension("1.2", drawrangeelementsfuncs, "-nodrawrangeelements", true) || GL_CheckExtension("GL_EXT_draw_range_elements", drawrangeelementsextfuncs, "-nodrawrangeelements", false); vid.support.ext_framebuffer_object = GL_CheckExtension("GL_EXT_framebuffer_object", fbofuncs, "-nofbo", false); vid.support.ext_stencil_two_side = GL_CheckExtension("GL_EXT_stencil_two_side", stenciltwosidefuncs, "-nostenciltwoside", false); @@ -842,7 +830,6 @@ void VID_CheckExtensions(void) // COMMANDLINEOPTION: GL: -noblendsubtract disables GL_EXT_blend_subtract // COMMANDLINEOPTION: GL: -nocombine disables GL_ARB_texture_env_combine or GL_EXT_texture_env_combine (required for bumpmapping and faster map rendering) // COMMANDLINEOPTION: GL: -nocubemap disables GL_ARB_texture_cube_map (required for bumpmapping) -// COMMANDLINEOPTION: GL: -nocva disables GL_EXT_compiled_vertex_array (renders faster) // COMMANDLINEOPTION: GL: -nodepthtexture disables use of GL_ARB_depth_texture (required for shadowmapping) // COMMANDLINEOPTION: GL: -nodrawbuffers disables use of GL_ARB_draw_buffers (required for r_shadow_deferredprepass) // COMMANDLINEOPTION: GL: -nodrawrangeelements disables GL_EXT_draw_range_elements (renders faster) -- 2.39.2