Мой пользовательский QQuickItem в настоящее время выполняет следующие функции
- Создайте QSGNode, который является подклассом QSGSimpleTextureNode.
- В функции предварительной обработки узлов создайте объект QOpenGLFramebufferObject для рисования в
- Нарисуйте объект QOpenGLFramebufferObject с помощью QPainter
- Отображение содержимого QOpenGLFramebufferObject как содержимого узла
У меня есть следующий процесс преобразования FBO в QSGTexture, который я могу установить на QSGSimpleTextureNode.
QImage img = m_fbo->toImage();
QSGTexture* tex = m_window->createTextureFromImage(img, QQuickWindow::TextureCanUseAtlas);
setTexture(tex);
Это кажется очень неэффективным, и приложение начинает становиться реальным даже с FBO относительно разумного размера.
У меня следующие вопросы.
- Есть ли более простой способ добавить FBO в QSGTexture?
- Есть ли лучший совместимый с QPaintDevice элемент, который мне следует использовать, а не QOpenGLFramebufferObject?
- Есть ли лучший подкласс, который я должен расширить, чем QSGSimpleTextureNode, чтобы делать то, что я хочу делать?
Спасибо!