qt opengl用不了

qt opengl用不了,第1张

先用777999666qhw的方法试试,如果不行。。

可颤游庆能是你下的例子要求的QT版本和你安装的QT版本不一致造成的,比如你下的例子茄握要求QT3.X,而你装的磨嫌QT却是Qt4.7.4,所以构造函数有变化造成“No matching function”

qt

可以通过QGLWidget运行opengl。QGLWidget继承QWidget,能够直接在里面调用opengl的接口。这个在qt文档里有具体说

明,也有相关例子,所以不赘述了。但是无法在正式软件里面执行,为什么?因为正式软件是用QGraphicsScene这个场景类 *** 作和 *** 作一切

item,而用QGraphicsView将其显示出来,而每一个item都是QGraphicsItem的子类。QGLWidget并不是QGraphicsItem类,我曾经尝试用普通的QWidget类那样,通过proxy来加进QGraphicsItem,但是没有成功。或许有方法,但是没有找到。

于是我放弃了用QGLWidget来 *** 作opengl的打算,寻找直接在QGraphicsItem中 *** 作opengl的方法。通过查看文档和示例代码,找到了这个方法:

1 往qt工程文件里添加opengl以及对应念物猜的lib。

2

对QGraphicsView进行一个三维对话框的指定,代码如蚂明下:

QGLWidget *widget = new

QGLWidget(QGLFormat(QGL::SampleBuffers))

widget->makeCurrent()

QGraphicsView

view

view.setViewport(widget)

上述代码告诉了 QGraphicsView 类当前绘制的对象是支持opengl的。于是所有的场景中的item都将绘制到widget 上。

3

写一个QGraphicsItem的继承类,特别要重写paint函数。代码如下:

void XXX::paint(QPainter

*painter, const QStyleOptionGraphicsItem *option, QWidget

*widget)

{

painter->beginNativePainting()

glColor3f(0.5,1.0,0.2)

glBegin(GL_TRIANGLES)

glVertex3f(100.0,100.0,-100.0)

glVertex3f(150.0, 100.0,

-100.0)

glVertex3f(100.0, 150.0,

-100.0)

glEnd()

painter->endNativePainting()

}

上面这个函数主要是用opengl接口绘制了一个三角形。记住,在opengl绘制之前一定要执行painter->beginNativePainting()以及painter->endNativePainting()这两个语句。

QGraphicsScene、

QGraphicsView和QGraphicsItem的关系可以查阅相关文档,也不仔型赘述了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12458232.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存