В настоящее время я использую glew для обнаружения некоторых функций графического процессора связанного контекста openGL.
Представьте себе класс текстуры, в котором я хочу использовать перечисления 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 не поддерживается. Каков общий способ решения этой проблемы?
glewInit
). Принимая во внимание, что перечисления всегда предоставляются заголовочным файлом. - person Ben Voigt   schedule 21.09.2011#ifdef … {foobarblah;} #endif
; GLEW устанавливает несколько определений в зависимости от того, какие функции включены во время компиляции. Они устанавливаются в зависимости от того, что может делать целевая платформа. - person datenwolf   schedule 21.09.2011