У нас есть окно 3D-рендеринга, созданное с помощью GLFW, и мы хотим использовать QWebkit для отображения QWebPage внутри рендеринга (также известного как рендеринг QWebPage в текстуру OpenGL). Использование только версии ЦП слишком медленно, и Qt поддерживает рендеринг QWebkit в QOpenGLFramebufferObjects (используя QOpenGLPaintDevice).
Однако для этого требуется создание QOpenGLContext (для которого требуется собственное окно и т. д.), что в конечном итоге мешает работе всего нашего приложения. (Переключение между GLFW и Qt Context также вызывает бесконечное количество GL_INVALID_OPERATION)
Лучшее решение: мы получаем 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?