在QOpenGLWidget上使用Qt5小部件而不会透支?

时间:2018-12-29 07:27:27

标签: qt qt5

我有一个正在考虑移植到Qt5的OpenGL应用程序。我先介绍了自己的基本GUI功能,这些功能首先以正交透视图绘制,然后再绘制其余场景。片段着色器不在已覆盖的像素上运行,而是在GUI上运行。

我找不到有关Qt5的智能程度的任何信息。如果您可以在OpenGL中使用所需的深度缓冲区,那么我猜Qt被迫在事实之后绘制覆盖小部件。

是否可以引导小部件将其自身渲染为纹理?如果我要在屏幕上渲染为纹理,我想我还必须捕获所有输入并将其手动推送到小部件进行处理。

更好的办法是让我按需要设置缓冲区,然后触发窗口小部件以通过OpenGL将自身直接渲染到QOpenGLWidget中。有可能吗?

1 个答案:

答案 0 :(得分:0)

似乎他们有适用于所有OpenGL设备(src code)的绘画工具。根据文档,您可以使用绘画工具手动绘制小部件,然后进行其余的渲染。他们的资料显示他们正在积极使用模板缓冲区。

http://doc.qt.io/qt-5/qopenglwidget.html

  

还可以将2D图形绘制到QOpenGLWidget子类上   使用QPainter:

     
      
  • 在paintGL()中,而不是发出OpenGL命令,而是构造一个QPainter   用于小部件的对象。
  •   
  • 使用QPainter的成员函数绘制基元。
  •   
  • 直接OpenGL命令仍然可以发出。但是你   必须确保将这些内容包含在对画家的电话中   beginNativePainting()和endNativePainting()。
  •