我目前正在使用 glew 来检测绑定的 openGL 上下文的一些 GPU 功能。
想象一个纹理类,如果可用,我想使用 openGL 3.0 枚举,如果没有 opengl 3.0 但扩展名是,则回退到扩展名,即:
uint32 chooseGlInternalFormat(uint32 _pixelType, uint32 _pixelFormat)
{
uint32 ret;
//...
if(GLEW_EXT_texture_integer || GLEW_VERSION_3_0)
{
bool bUseExt = !GLEW_VERSION_3_0; //if only the extension is available but not gl 3.0, fallback
ret = bUseIntEXT ? GL_LUMINANCE8UI_EXT : GL_R8UI;
}
//...
}
显然,这会导致编译时错误,因为GL_R8UI
如果不支持 opengl 3.0,则不会存在。-解决此问题的常用方法是什么?