2012-07-03 1 views
0

Я пытаюсь создать библиотеку, которую я написал переносной. Это графическая библиотека, которая очень сильно использует расширенный OpenGL. Я разработал эту библиотеку на машине, которая поддерживает OpenGL 4.2.GLEW Загрузить OpenGL 2 EXT как OpenGL 4

Существует несколько функций OpenGL 4 (простой пример - glGenerateMipmap), которые не являются основными функциями OpenGL 2, но доступны под расширениями (в данном случае glGenerateMipmapEXT). При работе на более старом оборудовании я обнаружил, что указатель на функцию OpenGL 4 равен NULL, но функция расширения OpenGL 2, суффиксная с EXT, не работает и работает нормально.

Я использую GLEW. Хотя я понимаю, что иногда функции OpenGL 4 не идентичны функциям OpenGL 2 EXT, они чаще всего идентичны. Есть ли способ заставить GLEW загружать функции EXT в качестве функций OpenGL 4? Или я застрял переименовать все функции OpenGL 4 в их экземпляры EXT? Что-то другое?

ответ

3

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

В общем, при написании кода OpenGL вы выбираете конкретную версию + набор расширений и записываете на это. Если вам нужна дополнительная функциональность (что-то специфическое для оборудования), тогда вы пишете дополнительные кодеки, которые вызывают эти API.

За исключением основной поддержки MacOSX 3.2, вы можете ожидать, что старые расширения будут поддерживаться неограниченно на новом оборудовании. Таким образом, старые программы все еще могут работать на новых реализациях. Это не похоже на то, что вы найдете реализацию GL 4.x, которая не реализует GL_EXT_framebuffer_object.