При попытке запустить приложение 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.
Вышеуказанные данные выводятся из окна «Application Output» в QtCreator.
Я использую Windows 7, семейство графических адаптеров Intel (HD): версия драйвера 8.15.10.2559, версия OpenGL 3.1
Версия OpenGL взята из OpenGL Extensions Viewer
Версия драйвера была получена из Разрешение экрана-> Расширенные настройки-> Свойства-> Драйвер
Изменить 1:
Приложение работает на Linux (Ubuntu 14.04). Я перенес его без каких-либо изменений на мой ноутбук с Windows 7. Я использую Qt 5.7 на обоих ноутбуках (Linux & Windows). Он построен на Windows 7 без нареканий. Он собран и работает на Linux без каких-либо жалоб. Я думал, что у меня может быть проблема с версией OpenGL, но OpenGL Viewer говорит, что моя система имеет OpenGL 3.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
Других решений пока нет …