В момента използвам glew за откриване на някои GPU характеристики на обвързания 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