Вы должны использовать то, что доступно в этой реализации. Основная функция будет обозначена номером версии. Если вы ожидаете поддержки ядра FBO, вам потребуется версия 3.0 или выше.
Поддержка расширений обозначается строкой расширения. Вы должны проверить наличие доступных расширений при запуске и не должны использовать какие-либо расширения, которых там нет.
Теперь есть несколько расширений ARB, которые являются «базовыми расширениями». Это означает, что #defines и функции не имеют суффикса ARB. Таким образом, объект ARB_framebuffer является расширением, но он определяет glBindFramebuffer
без суффикса. Это означает, что вы можете проверить версию 3.0 или расширение, и в любом случае вы используете те же функции и # определения.
Расширения ядра почти всегда означают то же самое, что и эквивалент ядра. Неосновные расширения могут иметь изменения. Например, ARB_geometry_shader4 не является расширением ядра, а функциональность шейдера геометрии ядра из 3.2 сильно отличается с точки зрения спецификации и API.
Как правило, вы должны иметь какую-то минимальную версию OpenGL, которую вы принимаете, а затем запускать разные пути кода в зависимости от наличия более высоких версий и / или расширений GL.