Понимание glxinfo версии OpenGL

Каково различие между всеми различными строками версии в выводе команды glxinfo?

Я уже спросил это здесь, но не получил много ответов и, так или иначе, кажется, что существуют более связанные вопросы на AskUbuntu.

Вывод glxinfo|grep OpenGL следует,

 glxinfo |grep Open
    Vendor: Intel Open Source Technology Center (0x8086)
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) HD Graphics 520 (Skylake GT2) 
OpenGL core profile version string: 4.5 (Core Profile) Mesa 13.0.2
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 13.0.2
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 13.0.2
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:
.

Почему "базовый профиль" 4.5, в то время как строка версии OpenGL 3.0?

4
задан 20 March 2017 в 13:18

1 ответ

OpenGL ES является подмножеством исходной спецификации OpenGL и разработан для встроенных систем, таких как смартфоны. Я не на 100% уверен, почему номера версий не соответствуют, но они не делают. Последняя версия 4.5 для OpenGL и 3.2 для OpenGL ES. Это объясняет причину части ES OpenGL Вашего вывода. В Вашем случае у Вас есть поддержка последних версий и OpenGL и OpenGL ES.

Вы отметите, что OpenGL и OpenGL записи ES имеют строку версии и строку языковой версии штриховки. До OpenGL 3.3 номер версии OpenGL и число языковой версии штриховки не соответствовали. Я полагаю, что это - причина, у них есть отдельные записи в выводе (поскольку они могут, очевидно, отличаться для более старых аппаратных средств). Как замечено в Вашем выводе, номер версии (4.5) соответствует языковой версии штриховки (также 4.5).

самая твердая часть (и часть, в которой я не на 100% уверен) являются "строкой версии OpenGL".

Из того, что я видел на нескольких совершенно других машинах, это, кажется, ограничивается в версии 3.0. Языковая версия штриховки для 3,0 1.3, таким образом, строка языковой версии штриховки имеет смысл для этой версии OpenGL. Однако, почему версия ограничивается в 3,0? Мои мысли следующие:

Версия 3.0 представила депрекацию (см. эта ссылка ). Это также, куда два отдельных профиля прибыли из, "Ядро" и "Совместимость". Любая реализация OpenGL только должна реализовать "базовую" спецификацию, чтобы быть допустимой.

при чтении Меза-информации о версии для конкретной версии, Вы будете видеть, что оператор касается этой проблемы профиля ядра/совместимости. Следующее было взято из информации о версии для последней версии 17.0.0 здесь :

Mesa 17.0.0 implements the OpenGL 4.5 API, but the version reported by glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) / glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used. Some drivers don't support all the features required in OpenGL 4.5. OpenGL 4.5 is only available if requested at context creation because compatibility contexts are not supported.

Примечание последняя часть "OpenGL 4.5 только доступна, если требуется при создании контекста, потому что контексты совместимости не поддерживаются" . Поэтому я думаю, что "строка версии OpenGL" является поддерживаемой версией для контекста профиля "совместимости" (или другими словами для поддержки любой устаревшей функции до версии 3.0).

5
ответ дан 1 December 2019 в 09:32

Другие вопросы по тегам:

Похожие вопросы: