Как узнать, какую версию OpenGL я использую? - PullRequest
25 голосов
/ 27 октября 2011

Я начал писать программы на 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 автоматически используется?

1 Ответ

20 голосов
/ 27 октября 2011

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...