Подтвердить что ты не робот

Как узнать, какую версию OpenGL я использую?

Я начал писать программы, в C (на данный момент), используя GLFW и OpenGL. Вопрос в том, что, как узнать, какую версию OpenGL будет использовать моя программа? Мой ноутбук говорит, что у моей видеокарты есть OpenGL 3.3. Ввод "glxinfo | grep -i opengl" возвращает:

OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce 9600M GT/PCI/SSE2
OpenGL version string: 3.3.0 NVIDIA 285.05.09
OpenGL shading language version string: 3.30 NVIDIA via Cg compiler
OpenGL extensions:

Итак, автоматически используется OpenGL 3.3?

4b9b3361

Ответ 1

Просто позвоните glGetString(GL_VERSION) (как только контекст инициализируется, конечно), и потушите результат (который, на самом деле, тот же, что и glxinfo, я полагаю):

printf("%s\n", glGetString(GL_VERSION));

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

Но также имейте в виду, что для использования OpenGL-функций выше версии 1.1 вам необходимо получить соответствующие указатели на функции или использовать библиотеку, которая обрабатывает это для вас, например GLEW.