QOpenGLWidget绘制2D的方法

补充:必须在非核心模式的opengl才能实现同时使用gl原生函数和QPainter绘制。核心模式的opengl使用QPainter会导致QOpenGLWidget什么都显示不出来。

参考:https://stackoverflow.com/questions/27422928/qopenglwidget-and-qpainter-can-t-render-2d-and-3d-at-the-same-time



可以重新实现paintGL(),在其中通过QPainter绘图。通过update()重绘。

也可以使用通常QWidget的paintEvent()方法实现绘图,通过update()重绘。

下面是官方文档的节选:

Painting Techniques

As described above, subclassQOpenGLWidget to render pure 3D content in the following way:

  • Reimplement the initializeGL() andresizeGL() functions to set up the OpenGL state and provide a perspective transformation.
  • Reimplement paintGL() to paint the 3D scene, calling only OpenGL functions.

It is also possible to draw 2D graphics onto aQOpenGLWidget subclass usingQPainter:

  • In paintGL(), instead of issuing OpenGL commands, construct aQPainter object for use on the widget.
  • Draw primitives using QPainter's member functions.
  • Direct OpenGL commands can still be issued. However, you must make sure these are enclosed by a call to the painter's beginNativePainting() and endNativePainting().

When performing drawing usingQPainter only, it is also possible to perform the painting like it is done for ordinary widgets: by reimplementingpaintEvent().

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值