2015-04-01 2 views
0

Я решил использовать GLEW для обработки расширений вместо запроса основного профиля и необходимости переноса моего кода.Невозможно связать профиль совместимости OpenGL (символы EXT не распознаны)

Я хотел бы добавить поддержку для FBO's через профиль EXT в качестве первого шага.

Проблема заключается в том, что gcc не свяжет мой код (OSX 10.10), он не распознает функции gl*EXT(). Например, glBindFrameBufferEXT()

флаги как неопределенный символ. (GlBindFrameBuffer() также непризнанный ...)

связать против GLEW и попытались использовать GLEXT или GLFW с профилем совместимости, но ничего не работает! Мне не хватает библиотеки? Как сообщить gcc использовать правый профиль GL? Должен ли я перейти на основной профиль?

ответ

0

В MacOS X GLEW не много, потому что в MacOS X не так много расширений OpenGL и из-за того, что OpenGL интегрирован в MacOS X, все функции OpenGL-версии, поддерживаемые доступной инфраструктурой, немедленно доступно

... или нет, если вы используете функцию расширения, которая не поддерживается реализацией OpenGL MacOS X.

MacOS X - странный утенок семейства OpenGL: OpenGL используется на очень низком уровне в основных графических подпрограммах ОС, а OpenGL очень хорошо поддерживается ОС. Но он настолько глубоко встроен в ОС, что его вряд ли можно обновить без обновления всей ОС.

Решение: Не используйте это расширение. FBOs были введены с OpenGL-3.3, поэтому вы должны создать контекст 3-х основных профилей и можете напрямую использовать функции (без ... EXT).

+0

Спасибо за эти замечательные разъяснения! Есть ли способ скомпилировать с использованием GL3.3 api (таким образом, имея доступ к glGenFramebuffers(), например), но еще не перейдя в основной профиль? Я все еще использую некоторые функции фиксированного конвейера для простоты и простоты и не нуждаюсь в GLSL-версии gt 120 прямо сейчас. Если это возможно, как мне сказать gcc правильно связать мой проект? Огромное спасибо! –

+0

@ DanK: К сожалению (для вас) в MacOS X (и BTA) от alsa Mesa). Профили совместимости с OpenGL не поддерживаются *. Это означает: если вам нужны функции OpenGL-3, такие как FBOs, у вас нет выбора, кроме как открыть полный OpenGL-3 и оставить прежние функциональные возможности. – datenwolf

+0

Спасибо. Это решает! Я планирую этот шаг. –