Voronar
@Voronar
Code typesetter

Как увеличить производительность рендеринга на канве?

Здравствуйте.
В Qt есть такая техника рендеринга, когда в качестве базового класса для канвы (виджета) наследуется класс QGlWidget (QOpenGlWidget). Я правильно понимаю, что в этом случае используется OpenGL для рендеринга, что по идее быстрее чем какой-то другой способ (правда, а что по стандарту используется?).

Можно ли подобную технику применить для QWebKit (QWebView) чтобы ускорить Canvas Web API?
Кстати, а какое нативное средство используется для рендеринга в веб-канве?

P.S. Вот тут в комментариях нашёл похожий вопрос, но так и не понял ответ на него. Хотя я может и вопроса не понял.
  • Вопрос задан
  • 3160 просмотров
Пригласить эксперта
Ответы на вопрос 2
gbg
@gbg
Любые ответы на любые вопросы
Согласно документации, QT везде использует в качестве отрисовщика нечто, производное от QPainter.
QOpenGLPaintDevice - отрисовщик, использующий аппаратное ускорение OpenGL.

Если при старте приложения задать его в качестве отрисовщика, весь GUI, в том числе и WebView будет отрисовываться через него.
Ответ написан
Voronar
@Voronar Автор вопроса
Code typesetter
Армянское Радио: Проверил вот этот код:
#include <QApplication>
#include <QWidget>
#include <QOpenGLPaintDevice>
#include <QDebug>

int main(int argv, char **args)
{
  QApplication app(argv, args);

  QWidget               window;
  QPaintDevice*         pd    = nullptr;
  QOpenGLPaintDevice*   pgld  = nullptr;

  pd    = dynamic_cast<QPaintDevice*>(&window);
  pgld  = dynamic_cast<QOpenGLPaintDevice*>(&window);

  window.resize(250, 150);
  window.show();

  qDebug() << pd;   //0x7fffd5b2bb30
  qDebug() << pgld; //0x0

  return app.exec();
}

Второй каст для QOpenGLPaintDevice не получился, это видно по выводу адреса на консоль.
Получается что мы имеем программный рендеринг по умолчанию?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы