PDGL_API void pdglCullFace(int mode) { if(pglCullFace) { pglCullFace(mode); return; } pglCullFace=pdglGetProcAddress("glCullFace"); pglCullFace(mode); }
// set face culling static void ogl_CullFace( GfxFace eFace) { // check consistency and face ASSERT( eFace==GFX_FRONT || eFace==GFX_BACK || eFace==GFX_NONE); ASSERT( _pGfx->gl_eCurrentAPI==GAT_OGL); #ifndef NDEBUG GLenum gleCull; BOOL bRes = pglIsEnabled(GL_CULL_FACE); pglGetIntegerv( GL_CULL_FACE_MODE, (GLint*)&gleCull); OGL_CHECKERROR; ASSERT( (bRes==GL_FALSE && GFX_eCullFace==GFX_NONE) || (bRes==GL_TRUE && gleCull==GL_FRONT && GFX_eCullFace==GFX_FRONT) || (bRes==GL_TRUE && gleCull==GL_BACK && GFX_eCullFace==GFX_BACK)); #endif // cached? if( GFX_eCullFace==eFace && gap_bOptimizeStateChanges) return; _sfStats.StartTimer(CStatForm::STI_GFXAPI); if( eFace==GFX_FRONT) { if( GFX_eCullFace==GFX_NONE) pglEnable(GL_CULL_FACE); pglCullFace(GL_FRONT); } else if( eFace==GFX_BACK) { if( GFX_eCullFace==GFX_NONE) pglEnable(GL_CULL_FACE); pglCullFace(GL_BACK); } else { pglDisable(GL_CULL_FACE); } OGL_CHECKERROR; GFX_eCullFace = eFace; _sfStats.StopTimer(CStatForm::STI_GFXAPI); }
/* ================= GL_Cull ================= */ void GL_Cull( GLenum cull ) { if( !cull ) { pglDisable( GL_CULL_FACE ); glState.faceCull = 0; return; } pglEnable( GL_CULL_FACE ); pglCullFace( cull ); glState.faceCull = cull; }