我正在尝试使用OpenGL ES 2.0执行多个图像处理,并将输出显示到子类QDeclarativeItem中,然后将在我的QML GUI中使用。 我仔细阅读了这里的答案:http://developer.qt.nokia.com/forums/viewthread/4109 并成功通过覆盖QDeclarativeItem的paint()方法在我的QML GUI中绘制一个红色到蓝色的矩形:
void GLDeclarativeItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
painter->beginNativePainting();
glBegin(GL_QUADS);
glColor3ub(0,0,255);
glVertex2d(0, 0);
glVertex2d(0, height());
glColor3ub(255,0,0);
glVertex2d(width(), height());
glVertex2d(width(), 0);
glEnd();
painter->endNativePainting();
}
然而,我想要实现的是绘制将在我的自定义QGLWidget中处理的图像作为上述QDeclarativeItem的内容(而不是红色到蓝色的内容)。
在我使用的自定义QGLWidget中:
void GLWidget::paintGL()
{
glClear(GL_COLOR_BUFFER_BIT);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
}
用于绘图,工作正常。但是,我找不到我的GLWidget中的绘图和我的GLDeclarativeItem之间的转换。到目前为止我尝试过的所有东西都给了我一个没有任何内容的矩形。 谢谢你的帮助!
答案 0 :(得分:1)
我做了类似的事情,但解决方法不同:我使用了叠加。
我只是将 OpenGL渲染放在自己的小部件中,该小部件位于QDeclarativeView之上。
虽然你无法绘制OpenGL渲染的顶部,但效果很好。如果您真的需要,请使用半透明背景堆叠另一个QML视图。
祝你好运。