关于实时渲染的内容显示

这些时间在研究如何将渲染结果显示到屏幕上,包括以前用到的思路大致有以下这些种:

直接显示到OpenGL窗口

大致有三种流程:

  • 一是用OpenGL渲染,然后用OpenGL窗口显示(使用FrameBuffer),这是最简单的方式。
  • 二是用CUDA渲染,然后基于OpenGL互操作,将生成结果绑定到OpenGL窗口上。
  • 三是用CUDA或者CPU渲染,将结果数组(指针指向的Buffer)绑定到OpenGL纹理上,用纹理渲染的方法贴到OpenGL窗口上。

方法三可以参考:

Qt之OpenGL实时显示图像_qopenglwidget显示图片_GK_2014的博客-CSDN博客

显示到Qt控件上

QImage和QPixelMap都支持将指针指向的数组拷贝并显示。

但是由于需要把渲染好的CPU数据拷贝到QImage或者QPixelMap中再显示,所以效率并不是很高。

显示到QOpenGL控件上

QOpenGL控件可以参考:

QVTKWidget、QVTKOpenGLWidget等该使用哪一个?_风烟倦的博客-CSDN博客

在Qt5.4以前,在Qt中使用OpenGL一般是使用QGLWidget。
而在Qt5.4及后面版本中,引入了QOpenGLWidget旨在代替老旧的QGLWidget,但是QGLWidget仍然是被保留的。

操作方法是:

如果是其他应用,比如CPU渲染得到的图像Buffer,需要将结果数组(指针指向的Buffer)绑定到OpenGL纹理上,用纹理渲染的方法贴到OpenGL窗口上。

显示到VTK控件上:

QVTKWidget、QVTKOpenGLWidget等该使用哪一个?_风烟倦的博客-CSDN博客

VTK版本(Qt版本为5.4之后的情况下):

在Qt5.4以前,在Qt中使用OpenGL一般是使用QGLWidget,相对应的VTK控件只能选择QVTKWidget/QVTKWidget2。其中QVTKWidget2是QVTKWidget的升级,不过也是十分古老了,这两个类都不建议使用。
而在Qt5.4及后面版本中,引入了QOpenGLWidget旨在代替老旧的QGLWidget,但是QGLWidget仍然是被保留的。对应的VTK控件为QVTKOpenGLWidget/QVTKOpenGLNativeWidget。

在VTK8.2之前的版本,一般是使用QVTKOpenGLWidget;
在VTK8.2及之后的版本里,引入了QVTKOpenGLNativeWidget;

操作方法是:

把渲染好的CPU数据拷贝到QVTK控件中再显示。

QVTK控件控件的图像放大功能非常好,放大的结果质量较高,无锯齿。

你可能感兴趣的:(qt,开发语言)