Windows 7, QT 5.7, семейство графических адаптеров Intel (HD), OpenGL V 3.1

При попытке запустить приложение Qt на ноутбуке с Windows 7 он говорит следующее (и продолжает повторять):

shader compilation failed: 
"Failed to create D3D shaders.\n"
QOpenGLShader::link: Failed to create D3D shaders.
Failed to create D3D shaders.

QOpenGLShaderProgram::uniformLocation( matrix ): shader program is not linked
QOpenGLShaderProgram::uniformLocation( color ): shader program is not linked
QOpenGLShaderProgram::uniformLocation( textureScale ): shader program is not linked
QOpenGLShaderProgram::uniformLocation( dpr ): shader program is not linked
QOpenGLShader::link: Failed to create D3D shaders.

Выходные данные выше взяты из окна «Вывод приложения» в QtCreator.

Я использую Windows 7, Intel (HD) Graphics Family: Версия драйвера 8.15.10.2559, OpenGL версии 3.1

Версия OpenGL взята из средства просмотра расширений OpenGL. Версия драйвера была получена из меню «Разрешение экрана» -> «Дополнительные настройки» -> «Свойства» -> «Драйвер».

Редактировать 1: Приложение работает в Linux (Ubuntu 14.04). Я перенес его без каких-либо модификаций на свой ноутбук с Windows 7. Я использую Qt 5.7 на обоих ноутбуках (Linux и Windows). Он построен на Windows 7 без каких-либо нареканий. Он собран и работает на Linux без каких-либо нареканий. Я думал, что у меня может быть проблема с версией OpenGL, но OpenGL Viewer говорит, что в моей системе установлен OpenGL 3.1.


person user37997    schedule 11.07.2016    source источник
comment
Укажите код, вызывающий ошибку   -  person Taegost    schedule 11.07.2016


Ответы (1)


Этот журнал ошибок

shader compilation failed: 
"Failed to create D3D shaders.\n"
QOpenGLShader::link: Failed to create D3D shaders.

настоятельно предполагает, что используемая вами сборка Qt использует слой эмуляции ANGLE OpenGL (поверх Direct3D). Вы можете найти Qt в двух вариантах сборки, и ANGLE является более широко используемым в Windows, потому что драйверы по умолчанию, установленные в Windows, не имеют современной поддержки OpenGL… что приводит к сбою приложений, требующих современных функций OpenGL, таких как Qt5. Следовательно, есть вариант сборки Qt5, который содержит этот уровень эмуляции.

В вашем случае вы, вероятно, захотите установить (или, возможно, уже сделали) собственный драйвер OpenGL для своего графического процессора (доступный непосредственно на веб-сайте поставщика) и использовать сборку Qt, настроенную для использования собственной реализации OpenGL вокруг (Qt построен с конфигурацией -opengl desktop). См. также QT и встроенную поддержку OpenGL в MS Windows.

person datenwolf    schedule 11.07.2016
comment
Спасибо datenwolf, это прибило это. - person user37997; 13.07.2016