PDGL_API void pdglEnableClientState( GLenum cap ) { if(pglEnableClientState) { pglEnableClientState(cap); return; } pglEnableClientState=pdglGetProcAddress("glEnableClientState"); pglEnableClientState(cap); }
// prepare texture coordinates array for API static void ogl_SetTexCoordArray( GFXTexCoord *ptex, BOOL b4/*=FALSE*/) { ASSERT( _pGfx->gl_eCurrentAPI==GAT_OGL); ASSERT( ptex!=NULL); _sfStats.StartTimer(CStatForm::STI_GFXAPI); pglEnableClientState(GL_TEXTURE_COORD_ARRAY); ASSERT( pglIsEnabled(GL_TEXTURE_COORD_ARRAY)); pglTexCoordPointer( b4?4:2, GL_FLOAT, sizeof (*ptex), ptex); OGL_CHECKERROR; _sfStats.StopTimer(CStatForm::STI_GFXAPI); }
// prepare normal array for API static void ogl_SetNormalArray( GFXNormal *pnor) { ASSERT( _pGfx->gl_eCurrentAPI==GAT_OGL); ASSERT( pnor!=NULL); _sfStats.StartTimer(CStatForm::STI_GFXAPI); pglEnableClientState(GL_NORMAL_ARRAY); ASSERT( pglIsEnabled(GL_NORMAL_ARRAY)); pglNormalPointer( GL_FLOAT, sizeof (*pnor), pnor); OGL_CHECKERROR; _sfStats.StopTimer(CStatForm::STI_GFXAPI); }
// enable usage of color array for subsequent rendering static void ogl_EnableColorArray(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 = TRUE; _sfStats.StartTimer(CStatForm::STI_GFXAPI); pglEnableClientState(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; } }