From 3c3d5d472e4e0f7bdd750c958581c591e7df5d3d Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Sun, 17 Nov 2019 18:51:03 +0300 Subject: [PATCH] ref_gl: bring back glDrawRangeElements support --- ref_gl/gl_local.h | 1 + ref_gl/gl_opengl.c | 24 +++++++++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/ref_gl/gl_local.h b/ref_gl/gl_local.h index 9d49cd8c..6549236a 100644 --- a/ref_gl/gl_local.h +++ b/ref_gl/gl_local.h @@ -615,6 +615,7 @@ enum GL_DEPTH_TEXTURE, GL_DEBUG_OUTPUT, GL_ARB_VERTEX_BUFFER_OBJECT_EXT, + GL_DRAW_RANGEELEMENTS_EXT, GL_EXTCOUNT, // must be last }; diff --git a/ref_gl/gl_opengl.c b/ref_gl/gl_opengl.c index 6f1725d7..6ba77f7d 100644 --- a/ref_gl/gl_opengl.c +++ b/ref_gl/gl_opengl.c @@ -243,7 +243,19 @@ static dllfunc_t vbofuncs[] = { GL_CALL( glUnmapBufferARB ) }, // , { GL_CALL( glBufferDataARB ) }, { GL_CALL( glBufferSubDataARB ) }, - { NULL, NULL} + { NULL, NULL } +}; + +static dllfunc_t drawrangeelementsfuncs[] = +{ +{ GL_CALL( glDrawRangeElements ) }, +{ NULL, NULL } +}; + +static dllfunc_t drawrangeelementsextfuncs[] = +{ +{ GL_CALL( glDrawRangeElementsEXT ) }, +{ NULL, NULL } }; /* @@ -581,6 +593,7 @@ void GL_InitExtensionsGLES( void ) // case GL_ARB_SEAMLESS_CUBEMAP: NOPE // case GL_EXT_GPU_SHADER4: NOPE // case GL_DEPTH_TEXTURE: NOPE + // case GL_DRAWRANGEELEMENTS_EXT: NOPE default: GL_SetExtension( extid, false ); } @@ -692,6 +705,15 @@ void GL_InitExtensionsBigGL( void ) // rectangle textures support GL_CheckExtension( "GL_ARB_texture_rectangle", NULL, "gl_texture_rectangle", GL_TEXTURE_2D_RECT_EXT ); + if( !GL_CheckExtension( "glDrawRangeElements", drawrangeelementsfuncs, "gl_drawrangeelements", GL_DRAW_RANGEELEMENTS_EXT ) ) + { + if( GL_CheckExtension( "glDrawRangeElementsEXT", drawrangeelementsextfuncs, + "gl_drawrangelements", GL_DRAW_RANGEELEMENTS_EXT ) ) + { + pglDrawRangeElements = pglDrawRangeElementsEXT; + } + } + // this won't work without extended context if( glw_state.extended ) GL_CheckExtension( "GL_ARB_debug_output", debugoutputfuncs, "gl_debug_output", GL_DEBUG_OUTPUT );