我在Qt编写VR应用程序,需要在桌面和VR内部显示QWidget。
到目前为止,我正在渲染:
form
这是从主QOpenGLWidget的paintGL()调用的。
在Vr中,此纹理用于四边形。 到目前为止,只有文本被渲染。如果将QPixmap用作设备,则窗口小部件呈现正常。
My Widget非常复杂,有4k行代码用于所有旋转框,标签之间的连接...
答案 0 :(得分:0)
我找到了解决方案,也许不是最好的解决方案。
Overlay需要自己的上下文,所以在init:
overlayGLcontext = new QOpenGLContext();
overlayGLcontext->setFormat( format );
overlayGLcontext->setShareContext(widgetGLcontext);
overlayGLcontext->create();
offscreen_surface = new QOffscreenSurface();
offscreen_surface->create();
...
overlayGLcontext->makeCurrent(offscreen_surface);
fbo = new QOpenGLFramebufferObject( w12, h12, GL_TEXTURE_2D);
...
overlayGLcontext->makeCurrent(offscreen_surface);
fbo->bind();
QOpenGLPaintDevice device(QSize(w12,h12));
QPainter painter(&device);
painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);
painter.beginNativePainting();
gl_functions->glClearColor(0.0, 0.0, 0.0, 0.0);
gl_functions->glClear(GL_COLOR_BUFFER_BIT);
painter.endNativePainting();
widget1->render(&painter);
widget2->render(&painter,QPoint(widget1->width(),0),QRegion());
painter.end();
fbo->release();
texture = fbo->texture();