我正在用Qt编写一个VR应用程序,需要在桌面和VR内部显示QWidget。
目前我的渲染方式如下:
QOpenGLPaintDevice device(QSize(w12,h12));
QPainter painter(&device);
gl_functions->glBindFramebuffer(GL_FRAMEBUFFER, fbo);
//painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);
gl_functions->glClearColor(0.0, 0.0, 0.0, 0.0);
gl_functions->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
//QPixmap pixmap(widget2->size());
//widget2->render(&pixmap);
//pixmap.save("pic.jpg");
widget2->render(&painter);
这个函数被调用于主要的QOpenGLWidget的paintGL()函数中。
在VR中,该纹理被用作一个四边形。目前只有文本可以呈现。如果使用QPixmap作为设备,那么小部件就会呈现得很好。
我的小部件非常复杂,包含了连接所有旋钮、标签等的4000行代码...
QPainter::end()
吗?如果没有,那么渲染可能是不完整的。 - G.M.