Недавно я начал писать код, который использует более новые реализации OpenGL. Однако я заметил, что в новых реализациях OpenGL многие старые функции считаются устаревшими. Есть ли способ отключить их, если я хочу использовать только правильные функции?Можно ли явно отключить устаревшие функции OpenGL в моем коде?
3
A
ответ
6
Используйте ARB_create_context_profile и запросите перекрестный подход.
Контексты с прямой связью определяются только для OpenGL версий 3.0 и новее. Они не должны поддерживать функциональные возможности, отмеченные как , как устаревшие для этой версии API, а контекст, не поддерживающий пересылку, должен поддерживать всю функциональность в той версии, устаревшей или нет.
0
Вы можете скомпилировать с помощью http://www.opengl.org/registry/api/gl3.h как предложено здесь: Forcing OpenGL Core Profile Only
Хорошо, я предполагаю, что черный экран означает, что он работал. Есть ли способ получить информацию о вызываемых функциях, которые не работают или они просто не работают? –
Функции не поддерживаются/реализуются, поэтому правильная реализация должна возвращать 'nullptr' в' GetProcAddress' для всех функций post-1.2 и либо сбой, либо сбой для статически связанных функций pre-1.2 (лично, я предпочитаю «сбой» », но большинство разработчиков, скорее всего, не сработают, т. е.« черный экран »). Теоретически, контекст отладки должен предоставить вам более подробную информацию, подобную этой (например, вызвать обратный вызов для каждой нереализованной функции), но они, похоже, не работают (не для меня на моей карте nvidia, так или иначе). – Damon