【发布时间】:2017-12-12 10:40:48
【问题描述】:
我正在 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 用作设备,则小部件呈现良好。
我的小部件非常复杂,有 4k 行代码用于连接所有旋转框、标签……
【问题讨论】:
-
您确定
QPainter::end()已被调用(直接或通过QPainterdtor)在您使用渲染结果之前?如果不是,则渲染可能不完整。 -
painter.end();在 widget2->render(&painter);同样的问题