PDGL_API void pdglDisableClientState( GLenum cap ) { if(pglDisableClientState) { pglDisableClientState(cap); return; } pglDisableClientState=pdglGetProcAddress("glDisableClientState"); pglDisableClientState(cap); }
// prepare vertex array for API static void ogl_SetVertexArray( GFXVertex4 *pvtx, INDEX ctVtx) { ASSERT( _pGfx->gl_eCurrentAPI==GAT_OGL); ASSERT( ctVtx>0 && pvtx!=NULL && GFX_iActiveTexUnit==0); GFX_ctVertices = ctVtx; _sfStats.StartTimer(CStatForm::STI_GFXAPI); pglDisableClientState( GL_TEXTURE_COORD_ARRAY); pglDisableClientState( GL_COLOR_ARRAY); pglDisableClientState( GL_NORMAL_ARRAY); ASSERT( !pglIsEnabled( GL_TEXTURE_COORD_ARRAY)); ASSERT( !pglIsEnabled( GL_COLOR_ARRAY)); ASSERT( !pglIsEnabled( GL_NORMAL_ARRAY)); ASSERT( pglIsEnabled( GL_VERTEX_ARRAY)); pglVertexPointer( 3, GL_FLOAT, sizeof (*pvtx), pvtx); OGL_CHECKERROR; GFX_bColorArray = FALSE; // mark that color array has been disabled (because of potential LockArrays) _sfStats.StopTimer(CStatForm::STI_GFXAPI); }
// enable usage of constant color for subsequent rendering static void ogl_DisableColorArray(void) { // check consistency ASSERT( _pGfx->gl_eCurrentAPI==GAT_OGL); #ifndef NDEBUG BOOL bRes; bRes = pglIsEnabled(GL_COLOR_ARRAY); OGL_CHECKERROR; ASSERT( !bRes == !GFX_bColorArray); #endif // cached? if( !GFX_bColorArray && gap_bOptimizeStateChanges) return; GFX_bColorArray = FALSE; _sfStats.StartTimer(CStatForm::STI_GFXAPI); pglDisableClientState(GL_COLOR_ARRAY); OGL_CHECKERROR; _sfStats.StopTimer(CStatForm::STI_GFXAPI); }
/* ================= GL_SetTexCoordArrayMode ================= */ void GL_SetTexCoordArrayMode( GLenum mode ) { int tmu = min( glConfig.max_texture_coords, glState.activeTMU ); int bit, cmode = glState.texCoordArrayMode[tmu]; if( mode == GL_TEXTURE_COORD_ARRAY ) bit = 1; else if( mode == GL_TEXTURE_CUBE_MAP_ARB ) bit = 2; else bit = 0; if( cmode != bit ) { if( cmode == 1 ) pglDisableClientState( GL_TEXTURE_COORD_ARRAY ); else if( cmode == 2 ) pglDisable( GL_TEXTURE_CUBE_MAP_ARB ); if( bit == 1 ) pglEnableClientState( GL_TEXTURE_COORD_ARRAY ); else if( bit == 2 ) pglEnable( GL_TEXTURE_CUBE_MAP_ARB ); glState.texCoordArrayMode[tmu] = bit; } }
static void ogl_DisableTexture(void) { // check consistency ASSERT( _pGfx->gl_eCurrentAPI==GAT_OGL); #ifndef NDEBUG BOOL bRes; bRes = pglIsEnabled(GL_TEXTURE_2D); OGL_CHECKERROR; ASSERT( !bRes == !GFX_abTexture[GFX_iActiveTexUnit]); #endif // cached? if( !GFX_abTexture[GFX_iActiveTexUnit] && gap_bOptimizeStateChanges) return; GFX_abTexture[GFX_iActiveTexUnit] = FALSE; _sfStats.StartTimer(CStatForm::STI_GFXAPI); pglDisable(GL_TEXTURE_2D); pglDisableClientState(GL_TEXTURE_COORD_ARRAY); OGL_CHECKERROR; _sfStats.StopTimer(CStatForm::STI_GFXAPI); }