OpenGL / GLEW: как выбрать правильное / существующее перечисление, не вызывая ошибку времени компиляции - PullRequest
0 голосов
/ 21 сентября 2011

В настоящее время я использую 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 не поддерживается. - Как обычно это можно решить?

1 Ответ

1 голос
/ 21 сентября 2011

Некоторые большие приложения принимают новейшую спецификацию перечисления и добавляют собственные перечисления на ее основе.Если вам это нужно только один раз, вы можете просто определить свой собственный enum для этого отдельного случая.

...