QOpenGLContext из GLFW Context

У нас есть окно 3D-рендеринга, созданное с использованием GLFW, и мы хотим использовать QWebkit для отображения QWebPage внутри рендеринга (он же визуализирует QWebPage в текстуру OpenGL). Использование только версии ЦП слишком медленное, и Qt поддерживает рендеринг QWebkit в QOpenGLFramebufferObjects (используя QOpenGLPaintDevice).

Однако для этого необходимо создать QOpenGLContext (для которого требуется собственное окно и т. Д.), Что в конечном итоге повлияет на все наше приложение. (Переключение между GLFW и Qt Context также вызывает бесконечное количество GL_INVALID_OPERATIONs)

Лучшее решение: мы заставляем Qt использовать контекст GLFW.

Пример кода:

QOpenGLFramebufferObject qfbo(mWidth, mHeight); //< this crashes because he will implicitly try to get QOpenGLFunctions which gets the default context which is null
qfbo.bind();
QOpenGLPaintDevice paintdev(mWidth, mHeight);

QPainter painter(&paintdev);
painter.beginNativePainting();
mPage->mainFrame()->render( &painter );
painter.endNativePainting();

Итак, вот несколько вопросов:

  • возможно ли заставить Qt использовать контекст GLFW OpenGL?
  • если нет, как мы можем переключаться между контекстом GLFW и контекстом Qt? (использование совместного использования текстур для передачи визуализированного QWebPage)
  • если все это невозможно, существует ли бесплатный проект Webkit с 64-битной поддержкой Windows / Linux / Mac, который может выполнять рендеринг с использованием OpenGL?

3

Решение

@ Себастьян Кэбот написал:

Вы не можете напрямую смешивать два объекта контекста, используя QT. QT хорош, но для того, чтобы оставаться переносимым, он также имеет некоторые ограничения — в основном доступ к низкоуровневым дескрипторам объектов и непосредственное управление ими. Так что даже пытаясь использовать QOpenGLContext из другого потока, то тот, в котором он был создан, потерпит неудачу. И чтобы использовать любую из оболочек QT OpenGL, вам потребуется действующий QOpenGLContext ток. Так что то, что вы хотите, невозможно без взлома реализации QT.

-1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]