2013-06-30 2 views
0

Я собираюсь начать внедрение OpenGL 3 в свое приложение. В настоящее время я использую OpenGL 1.1, но я хотел сохранить некоторые из них из-за проблем, если я попытаюсь изменить код, но я хотел изменить часть своего кода на более быструю версию OpenGL. Если я делаю что-то вроде текстур связывания в OpenGL 1.1, могу ли я нарисовать текстуру в OpenGL 3?Можно ли смешивать версии OpenGL?

ответ

0

Omg .. opengl 1.1 is from 1997! Сделайте себе одолжение и избавитесь от материала трубопровода с фиксированной функцией и приспособитесь к OpenGL 4.x. Однако вы можете попробовать #version 420 core

в вашем шейдере.

+0

OpenGL 4 новее, но я беспокоюсь, что это слишком ново. –

+0

Что беспокоит ваш сладкий ум? – dinony

+0

Мой ноутбук всего 1 год и только ручки 3.0: P. Я никогда не смогу развиваться с помощью 3.1 + –

4

Смешивание версий OpenGL не так просто, как раньше. В OpenGL 3.0 многие старые функции были отмечены как «устаревшие» и были удалены в 3.1. Однако, поскольку OpenGL 3.2 существует два профиля: Core и Совместимость. Контекст OpenGL создается в отношении такого профиля. В профиле совместимости все устаревшие (и удаленные профили ядра) все еще доступны, и их также можно смешивать. Вы даже можете смешивать пользовательский вершинный шейдер с обработкой фрагмента фиксированной функции или наоборот.

Проблема заключается в том, что не требуется, чтобы разработчики фактически обеспечивали поддержку профиля совместимости. В MacOS X OpenGL 3.x и 4.x поддерживаются только в основном профиле.

В вашем конкретном примере связывание текстур будет работать во всех случаях, поскольку эта функция немодифицирована во всех версиях от 1.1 до 4.3 (и, вероятно, это произойдет в ближайшем будущем). Однако большинство ваших вызовов рисования, вероятно, не будут доступны в новых профилях ядра.

Смежные вопросы