2016-03-02 3 views
2

Я использую QWebEngine для отображения некоторых веб-страниц. К сожалению, он использует OpenGL внутренне - что приводит к сбою на некоторых графических адаптерах (можно легко увидеть драйвер-DLL как причину сбоя). В качестве второго предостережения невозможно поймать этот сбой блоком try-catch.Force QWebEngine для использования программного обеспечения

Итак, мой вопрос: как заставить QWebEngine использовать только рендеринг программного обеспечения и не использовать OpenGL?

Спасибо!

+0

Почему бы не просто скомпилировать версию библиотеки Qt без OpenGL? – Flovdis

+0

@Flovdis Если функция доступна так или иначе, почему вы хотите скомпилировать настраиваемую версию библиотеки Qt? Это сумасшедшие накладные расходы, и если есть другой способ, я обязательно поеду за ним вместо этого. – rbaleksandar

+0

@flovdis, потому что это заставит всю среду Qt использовать программный рендеринг, который не предназначен. для моих собственных приложений на основе OpenGL я могу легко проверить, работает ли это или нет, и избежать любой из этих функций, только QWebengine достаточно глуп, чтобы предположить, что все в порядке - что приводит к сбою. поэтому я хочу, чтобы qWebEngine использовал рендеринг программного обеспечения, но не все остальные приложения Qt. – Elmi

ответ

1

Предполагаю, что вы работаете в Windows и используете официальные двоичные файлы Qt и используете Qt 5.5 или новее. Они позволяют to switch between Desktop OpenGL, ANGLE (Direct X) and software rasterization at runime.

Должно быть поэтому достаточно, чтобы переменная окружения QT_OPENGL была либо «угловой» (для использования бэкэнда DirectX), либо «desktop». Чтобы это сделать, вы можете установить атрибуты приложения Qt :: AA_UseOpenGLES или Qt :: AA_UseSoftwareOpenGL.

Если вы используете WebEngine через Qt Quick, вы также можете использовать Qt Quick 2D renderer.

+0

Я нахожусь в Windows, но Windows 7 Embedded - где полное обнаружение графической платформы через Qt не работает (как я узнал недавно). И я работаю с самокомпилируемыми двоичными файлами (опция -opengl dynamic). Поэтому мне действительно нужен вариант заставить QWebEngine выполнять рендеринг программного обеспечения, а не всю среду. – Elmi

+0

@ Elmi вы нашли решение для этого в конце? У нас такая же проблема, как и приложение OpenGL, которое использовало WebKit для показа веб-страницы. Переход на 5.6 требует обновления в WebEngine, но просто создание QWebPage, даже не пытаясь загрузить страницу, вызывает сбои в некоторых системах. Я не мог выделить причину, у нас были сбои на картах AMD и NVidia. Иногда обновление драйверов графики решает проблему, иногда нет. Принуждение * просто QWebEngine * для использования растеризации программного обеспечения звучит как хорошая идея. Любая помощь очень приветствуется ... – Uflex

+0

@ Уфлекс, к сожалению, нет, QWebEngine - нестабильный кусок дерьма, это позор, который он выпустил в этом бедном состоянии ... – Elmi

Смежные вопросы