Browse Source

gl2shim: bind dummy VAO on DrawElements implementation on glcore, this generates GL Errors, but renders fine on mesa

pull/2/head
mittorn 9 months ago committed by Alibek Omarov
parent
commit
0e2fc277c8
  1. 21
      ref/gl/gl2_shim/gl2_shim.c

21
ref/gl/gl2_shim/gl2_shim.c

@ -815,7 +815,6 @@ typedef struct gl2wrap_arraypointer_s @@ -815,7 +815,6 @@ typedef struct gl2wrap_arraypointer_s
GLenum type;
GLsizei stride;
GLuint vbo;
//GLboolean enabled;
} gl2wrap_arraypointer_t;
static struct
@ -868,27 +867,17 @@ static unsigned int GL2_GetArrIdx( GLenum array ) @@ -868,27 +867,17 @@ static unsigned int GL2_GetArrIdx( GLenum array )
void GL2_EnableClientState( GLenum array )
{
gl2wrap_prog_t *prog;
GLuint flags = gl2wrap.cur_flags;
int idx = GL2_GetArrIdx(array);
//gl2wrap_arrays.ptr[idx].enabled = 1;
gl2wrap_arrays.flags |= 1 << idx;
// enable alpha test and fog if needed
prog = GL2_SetProg( flags );
//pglEnableVertexAttribArrayARB( prog->attridx[idx] );
}
void GL2_DisableClientState( GLenum array )
{
unsigned int idx = GL2_GetArrIdx(array);
//gl2wrap_arrays.ptr[idx].enabled = 0;
gl2wrap_arrays.flags &= ~(1 << idx);
//pglDisableVertexAttribArrayARB( gl2wrap.cur_prog->attridx[idx] );
}
static void GL2_SetupArrays( void )
static void GL2_SetupArrays( GLuint start, GLuint end )
{
unsigned int flags = gl2wrap_arrays.flags;
gl2wrap_prog_t *prog;
@ -897,6 +886,8 @@ static void GL2_SetupArrays( void ) @@ -897,6 +886,8 @@ static void GL2_SetupArrays( void )
if ( fogging )
flags |= 1 << GL2_FLAG_FOG;
prog = GL2_SetProg( flags );// | GL2_ATTR_TEXCOORD0 );
if( gl2wrap.vao )
pglBindVertexArray( gl2wrap.vao );
for( int i = 0; i < GL2_ATTR_MAX; i++ )
{
if(prog->attridx[i] < 0)
@ -921,13 +912,13 @@ static void GL2_SetupArrays( void ) @@ -921,13 +912,13 @@ static void GL2_SetupArrays( void )
static void APIENTRY GL2_DrawElements( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices )
{
GL2_SetupArrays();
GL2_SetupArrays( 0, 0 );
rpglDrawElements( mode, count, type, indices );
}
static void APIENTRY GL2_DrawRangeElements( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices )
{
GL2_SetupArrays();
GL2_SetupArrays( start, end );
if(rpglDrawRangeElements)
rpglDrawRangeElements( mode, start, end, count, type, indices );
else
@ -936,7 +927,7 @@ static void APIENTRY GL2_DrawRangeElements( GLenum mode, GLuint start, GLuint en @@ -936,7 +927,7 @@ static void APIENTRY GL2_DrawRangeElements( GLenum mode, GLuint start, GLuint en
static void APIENTRY GL2_DrawArrays( GLenum mode, GLint first, GLsizei count )
{
GL2_SetupArrays();
GL2_SetupArrays( 0, count );
rpglDrawArrays( mode, first, count );
}

Loading…
Cancel
Save