2016-01-14 8 views
3

Предстоящий Qt 5.6 представляет черный список, чтобы отметить некоторые графические карты, которые, как известно, недостаточно поддерживают OpenGL или Angle.Что происходит с черными списками в Qt 5.6 при запуске приложения QML?

Подтвердить, например.

Но что происходит с QML приложений на картах, которые имеют как disable_desktopgl и disable_angle набор? Могут ли эти пользователи не запускать приложения QML вообще?

ответ

3

Они не могут использовать OpenGL для ускорения Qt Quick, no. Это довольно серьезный недостаток. К сожалению, статус OpenGL в Windows - это кошмар. «Средний» компьютер Windows будет иметь графический процессор на базе Intel с древними драйверами, которые достаточно малы, чтобы заставить Qt даже не пытаться использовать какой-либо 3D вообще (OpenGL или Direct3D). NVIDIA и AMD, как правило, лучше, по крайней мере, они, как правило, более современны.

Обычно обновление драйверов Intel решает большинство проблем, но вы не всегда можете попросить своих пользователей обновить свои драйверы (возможно, они даже не смогут этого сделать, например, лишены прав администратора и/или использования ноутбуки, где версия драйвера была закреплена продавцом).

Обратите внимание, что даже в других проектах, таких как Chromium или Firefox, есть свои мелкие чернила с черным шрифтом (example).

В случае, если ваша карта полностью черный список вы можете:

  • использовать реализацию процессора OpenGL, такие как Mesa. Если вы отправляете opengl32sw.dll с вашим приложением, его можно подобрать Qt. See the explaination here.
  • использует Qt Quick 2D renderer, который является специализированным рендерером на основе ЦП для подмножества элементов Qt Quick. По сравнению с Mesa это невероятно быстрее (потому что ему не нужно проходить через конвейер OpenGL, чтобы рисовать, скажем, прямоугольник - он может просто рисовать прямоугольник с помощью 2D растеризатора); с другой стороны, некоторые вещи перестают работать, как эффекты шейдеров. В настоящее время он доступен только по коммерческой лицензии, но в 5.8 он будет открытым исходным кодом.

(придираться: QML является язык, Qt Quick является основой/библиотека для создания интерфейсов, которые вы программу с использованием QML).

+0

Спасибо. Давайте начнем с nitpicking, что очень интересно. Что касается моего опыта, Qt отличает два вида приложений: Qt Widgets и Qt QML-приложения (подтвердите http://doc.qt.io/qt-5/qmlapplications.html). Модуль Qt модуля I также называется «qml». Итак, вопрос в том, можно ли писать приложения QML, в которых нет Qt Quick? –

+0

Да, это так. Например, * Declarative State Machine framework * не использует Qt Quick, но это QML-only (используя * язык *). Если вы не связываетесь с Qt Quick (например, с помощью 'QT + = quick' в вашем файле' .pro'), вы не сможете использовать такие типы, как 'QQuickWindow' или' QQuickView'. OTOH: Qt Quick 2 типа доступны для QML через плагин. Это позволяет фактически создавать их в QML без привязки к чему-либо. – peppe

+0

Идеальный кусок советов, спасибо. Не могли бы вы добавить ссылку для 2d, являющейся OpenSource в 5.8? Это ново для меня. –