Вопрос или проблема
Я использую OpenGL 3.0 с Mesa 10.3.2 по умолчанию в Debian 8.1 Jessie, но мне нужна OpenGL 3.3, и я не знаю, как это включить. Я пытался обновить Mesa, но он все еще с OpenGL 3.0.
Вот вывод команды glxinfo | grep OpenGL:
Строка поставщика OpenGL: Intel Open Source Technology Center
Строка рендерера OpenGL: Mesa DRI Intel(R) Ivybridge Mobile
Строка версии ядра профиля OpenGL: 3.3 (Core Profile) Mesa 10.3.2
Строка версии языка шейдеров ядра профиля OpenGL: 3.30
Флаги контекста ядра профиля OpenGL: (нет)
Маска профиля ядра профиля OpenGL: core profile
Расширения ядра профиля OpenGL:
Строка версии OpenGL: 3.0 Mesa 10.3.2
Строка версии языка шейдеров OpenGL: 1.30
Флаги контекста OpenGL: (нет)
Расширения OpenGL:
Строка версии профиля OpenGL ES: OpenGL ES 3.0 Mesa 10.3.2
Строка версии языка шейдеров профиля OpenGL ES: OpenGL ES GLSL ES 3.0
Расширения профиля OpenGL ES:
Информация о процессоре:
процессор: 0
идентификатор поставщика: GenuineIntel
семейство ЦП: 6
модель: 58
название модели: Intel(R) Celeron(R) CPU 1000M @ 1.80GHz
стэппинг: 9
микрокод: 0x17
частота ЦП: 1279.968
размер кеша: 2048 KB
физический идентификатор: 0
количество ядер: 2
идентификатор ядра: 0
ядра ЦП: 2
apicid: 0
начальный apicid: 0
fpu: да
исключение fpu: да
уровень cpuid: 13
wp: да
флаги: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave lahf_lm arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms
bogomips: 3592.01
размер clflush: 64
выравнивание кеша: 64
размеры адресов: 36 бит физический, 48 бит виртуальный
управление питанием:процессор: 1
идентификатор поставщика: GenuineIntel
семейство ЦП: 6
модель: 58
название модели: Intel(R) Celeron(R) CPU 1000M @ 1.80GHz
стэппинг: 9
микрокод: 0x17
частота ЦП: 1282.640
размер кеша: 2048 KB
физический идентификатор: 0
количество ядер: 2
идентификатор ядра: 1
ядра ЦП: 2
apicid: 2
начальный apicid: 2
fpu: да
исключение fpu: да
уровень cpuid: 13
wp: да
флаги: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave lahf_lm arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms
bogomips: 3592.01
размер clflush: 64
выравнивание кеша: 64
размеры адресов: 36 бит физический, 48 бит виртуальный
управление питанием:
Строка версии ядра профиля OpenGL: 3.3 (Core Profile) Mesa 10.3.2
У вас уже есть OpenGL 3.3…
Ответ или решение
Ваш вопрос о поддержке OpenGL 3.3 на Intel HD Graphics в Debian 8.1 (Jessie) с Mesa 10.3.2 несколько запутан, однако, судя по выводам команды glxinfo
, у вас уже есть поддержка OpenGL 3.3.
Вот что говорит ваша информация:
-
OpenGL Core Profile Version: Строка
OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.3.2
указывает на то, что ваша система уже поддерживает OpenGL 3.3 в режиме core profile. Это означает, что базовые функции OpenGL 3.3 доступны для использования. -
OpenGL Version String: Но также есть строка
OpenGL version string: 3.0 Mesa 10.3.2
, которая показывает, что драйвер по умолчанию использует стандартный профиль OpenGL версии 3.0. Если вам необходимо использовать только функции, доступные в OpenGL 3.3, убедитесь, что вы создаете контекст OpenGL в режиме core profile, а не compatibility.
Как проверить установку и использовать OpenGL 3.3
-
Обновление Mesa: Если вы все же хотите обновить Mesa для использования более новой версии, вам нужно будет либо собрать его из исходников, либо использовать PPA (Personal Package Archive), если он доступен для вашей версии Debian. Однако для Debian 8.x может быть сложно найти поддержку более новых версий Mesa.
-
Создание контекста OpenGL 3.3:
- В вашем коде используйте библиотеки такие как GLFW или SDL, чтобы создать контекст OpenGL 3.3. Обязательно запрашивайте именно core profile.
Пример кода с использованием GLFW:
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
Проверка работоспособности
Чтобы проверить, поддерживает ли ваша система OpenGL 3.3:
- Создайте простую программу с OpenGL, которая использует функции, специфичные для 3.3, такие как
glGenVertexArrays
,glBindVertexArray
, и прочие. - Запустите эту программу и убедитесь, что она работает без ошибок.
Заключение
Судя по предоставленной информации, у вас уже есть поддержка OpenGL 3.3, только контекст по умолчанию установлен на версию 3.0. Так что попробуйте правильно создать контекст, и вы сможете использовать функции OpenGL 3.3. Если у вас возникнут дополнительные вопросы или проблемы с программированием на OpenGL, не стесняйтесь уточнять.