Spec-Zone.ru › Qt 6.0

Qt для Windows — Требования

На этой странице описаны необходимые библиотеки и среда для Qt для Windows.

Драйверы графики

Для работы Qt Quick требуется драйвер графики, предоставляющий Direct3D 11.1, Vulkan 1.0 или OpenGL 2.1 или выше. Начиная с Qt 6, по умолчанию для Qt Quick в Windows используется Direct3D 11. Это отличается от Qt 5, где по умолчанию использовался OpenGL, либо напрямую, либо через ANGLE, переводчик OpenGL в Direct3D. ANGLE больше не поставляется с Qt в Qt 6.

Для принудительного использования программного растризатора Direct3D (WARP) установите переменную среды QSG_RHI_PREFER_SOFTWARE_RENDERER в 1.

Для запроса использования Vulkan или OpenGL, для которых требуется установленный драйвер Vulkan или OpenGL, установите переменную среды QSG_RHI_BACKEND в значение vulkan или opengl, или используйте эквивалентный C++ API в main().

Хотя OpenGL не является стандартным для Qt Quick, он всё ещё широко используется во многих приложениях Qt, например, в приложениях на основе QWidget, использующих QOpenGLWindow или QOpenGLWidget. Следующие разделы содержат некоторые особенности OpenGL в сборке Qt.

Динамическая загрузка OpenGL

Qt поддерживает выбор и загрузку реализации OpenGL во время выполнения. Этот режим является стандартным и может быть явно запрошен путём передачи -opengl dynamic в скрипт конфигурации.

configure -opengl dynamic

Эта конфигурация наиболее гибкая, так как никаких зависимостей или предположений о реализации OpenGL не жестко закодированы во время компиляции. Это позволяет надёжно развертывать приложения. Если среда не предоставляет надлежащую реализацию OpenGL 2.0, произойдёт автоматический возврат к загрузке альтернативы opengl32.dll, стандартное имя которой opengl32sw.dll. В предварительно собранных пакетах Qt поставляется сборка Mesa llvmpipe, реализации программного растризатора OpenGL, под этим именем.

При конфигурации с -opengl dynamic, ни Qt, ни приложения, собранные с использованием qmake или CMake, не будут связаны с opengl32.lib. Вместо этого библиотека выбирается и загружается во время выполнения. По умолчанию Qt определит, предоставляет ли системная opengl32.dll функции OpenGL 2. Если они присутствуют, используется opengl32.dll, в противном случае пытается загрузить opengl32sw.dll. Подробности см. ниже.

Механизм загрузки может быть настроен через переменную среды QT_OPENGL и следующие атрибуты приложения:

  • Qt::AA_UseDesktopOpenGL Эквивалентно установке QT_OPENGL в desktop.
  • Qt::AA_UseOpenGLES Не имеет эффекта в Qt 6.
  • Qt::AA_UseSoftwareOpenGL Эквивалентно установке QT_OPENGL в software.

При явном запросе определённой конфигурации проверки при запуске приложения не производится, то есть системная opengl32.dll не будет проверяться.

Динамическая загрузка существенно влияет на приложения, содержащие прямые вызовы OpenGL: они могут не связаться, так как opengl32.lib не указывается компилятору автоматически. Вместо этого ожидается, что приложения будут использовать функции OpenGL через класс QOpenGLFunctions. Таким образом, прямая зависимость от библиотеки OpenGL удаляется, и все вызовы будут перенаправлены во время выполнения на реализацию, выбранную Qt. В качестве альтернативы, приложения могут выполнять прямые вызовы функций OpenGL, если они добавят opengl32.lib в свои файлы проекта .pro: LIBS += opengl32.lib (Visual Studio) или LIBS += -lopengl32 (MinGW). Результат, с точки зрения приложения, эквивалентен конфигурации сборки -opengl desktop Qt.

Qt::AA_UseSoftwareOpenGL особый в том смысле, что он попытается загрузить реализацию OpenGL с нестандартным именем. Стандартное имя opengl32sw.dll. Это позволяет поставлять только программную реализацию OpenGL, например, сборку Mesa с llvmpipe, под этим именем. При необходимости имя файла можно переопределить, установив переменную среды QT_OPENGL_DLL.

Можно предоставить файл конфигурации в формате JSON, указывающий, какая реализация OpenGL должна использоваться в зависимости от видеокарты и версии драйвера. Путь указывается переменной среды QT_OPENGL_BUGLIST. Относительные пути разрешаются с помощью QLibraryInfo::SettingsPath или QStandardPaths::ConfigLocation. Файл использует формат списка ошибок драйвера, используемый в Проектах Chromium. Он состоит из списка записей, каждая из которых определяет набор условий и список ключевых слов функций. Обычно для соответствия определённой видеокарте используются идентификаторы устройства и производителя. Их можно найти в выводе инструмента qtdiag или dxdiag.

Следующие ключевые слова функций важны для выбора реализации OpenGL:

Примечание: В Qt 6 принимаются устаревшие ключевые слова, связанные с ANGLE (disable_angle, disable_d3d11, disable_d3d9), но они не имеют эффекта.

  • disable_desktopgl — Отключает OpenGL. Это гарантирует, что Qt не пытается использовать стандартный OpenGL (opengl32.dll) и сразу запускает ANGLE. Это полезно для предотвращения аварий приложения из-за неисправных драйверов OpenGL.
  • disable_rotation — Принудительно устанавливает ориентацию приложения в альбомную всегда. Не имеет эффекта при использовании программной реализации OpenGL. Это предназначено для драйверов, у которых есть проблемы с поворотом.
  • disable_program_cache — Отключить сохранение двоичных файлов шейдеров на диск.

Пример файла выглядит следующим образом:

{
"entries": [
{
  "id": 1,
  "description": "Disable D3D11 on older nVidia drivers",
  "os": {
    "type": "win"
  },
  "vendor_id": "0x10de",
  "device_id": ["0x0DE9"],
  "driver_version": {
    "op": "<=",
    "value": "8.17.12.6973"
  },
  "features": [
    "disable_d3d11"
  ]
},
...

Если QT_OPENGL_BUGLIST не указано, будет использоваться встроенный список. В него обычно включаются некоторые старые, менее мощные видеокарты с disable_desktopgl установленным, чтобы предотвратить использование Qt их нестабильных реализаций настольного OpenGL и вместо этого сразу вернуться к попытке загрузить альтернативную программную библиотеку.

На практике наиболее распространёнными комбинациями являются следующие:

  • disable_desktopgl — В случае, если система предоставляет OpenGL 2.0 или более позднюю версию, но известно, что драйвер нестабилен и склонен к авариям.
  • disable_desktopgl, disable_angle — Когда не требуется ускоренный путь. Это гарантирует, что Qt пытается использовать только программный растризатор (opengl32sw.dll). Может быть полезно в виртуальных машинах и приложениях, которые развертываются на широком спектре старых систем.

Поддерживаемые ключи для сопоставления заданной карты или драйвера следующие. Обратите внимание, что некоторые из них специфичны для Qt.

  • os.type — Операционная система: win, linux, macosx, android
  • os.version — Версия ядра
  • os.release — Указывает список выпусков операционной системы в Windows: xp, vista, 7, 8, 8.1, 10.
  • vendor_id — Производитель из идентификатора адаптера
  • device_id — Список идентификаторов устройств PCI.
  • driver_version — Версия драйвера из идентификатора адаптера
  • driver_description — Соответствие, когда значение является подстрокой описания драйвера из идентификатора адаптера
  • gl_vendor — Соответствие, когда значение является подстрокой строки GL_VENDOR

Для отключения всех блокировок установите переменную среды QT_NO_OPENGL_BUGLIST в любое значение. Это пропустит чтение любых конфигурационных файлов и вместо этого предположит, что ничего не отключено, независимо от драйвера или ОС.

Примечание: Хотя обычно не требуется, QT_NO_OPENGL_BUGLIST может стать актуальным в определённых виртуализированных средах с несколькими, возможно виртуальными, графическими адаптерами. Если журналы из категорий, таких как qt.qpa.gl, показывают, что обнаружение драйвера и графического адаптера приводит к некорректному отключению OpenGL, рекомендуется установить эту переменную среды, чтобы приложение работало нормально. Эта переменная среды была добавлена в Qt 5.15.

Прямая зависимость от opengl32.dll

Альтернативой стандартным сборкам OpenGL dynamic является прямая зависимость от opengl32.dll. Для этого режима передайте параметры командной строки -opengl desktop в скрипт конфигурации.

configure -opengl desktop

Примечание: Использование EGL и OpenGL ES не поддерживается в Windows. В Qt 6 OpenGL в Windows всегда подразумевает использование WGL в качестве интерфейса оконной системы.

В таких сборках Qt многие общие библиотеки Qt, а также приложения Qt будут зависеть от opengl32.dll, поэтому использование альтернативной библиотеки невозможно.

Сборка из исходных кодов

Эти инструменты не нужны для запуска приложений Qt, но они необходимы для сборки Qt из исходных кодов.

  • CMake (доступен в онлайн-установщике Qt)
  • Ninja (доступен в онлайн-установщике Qt)
  • ActivePerl — Установите последнюю версию ActivePerl (страница загрузки) и добавьте расположение установки в вашу PATH.
  • Python — Установите Python от сюда и добавьте расположение установки в вашу PATH.

Примечание: Пожалуйста, убедитесь, что исполняемый файл perl из ActivePerl находится в пути перед исполняемым файлом perl, предоставленным msysgit, поскольку последний устарел.

Инструкции по сборке исходного кода Qt см. на странице Qt для Windows — Сборка из исходного кода.

Компиляторы

В Qt 6.0 поддерживаются следующие компиляторы и конфигурации:

Операционная системаАрхитектураКомпилятор
Windows 10x86_64MSVC 2019, MinGW 8.1

Зависимости QDoc

QDoc использует Clang для парсинга кода C++. Если вы хотите собрать QDoc вручную, см. Установка Clang для QDoc для получения подробных требований к сборке.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/windows-requirements.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API