开源项目推荐:OpenGL之Qt专辑;重点是ccViewer和libQGLViewer

简介: 开源项目推荐:OpenGL之Qt专辑;重点是ccViewer和libQGLViewer

1、Qt官方自带的案例


https://doc.qt.io/qt-5/qtopengl-index.html


F:\Qt\Qt5.12.9\Examples\Qt-5.12.9\opengl



2、学习教程


LearnOpenGL


https://learnopengl.com/


https://github.com/JoeyDeVries/LearnOpenGL


https://github.com/MidoriYakumo/learnopengl-qt3d



Tutorials for Qt5 OpenGL implementation


https://github.com/TReed0803/QtOpenGL


https://github.com/chenzilin/qt-opengl



3、开源项目


Qt官方自带的QGLWidget/QOpenGLWidget类,仅仅提供了基本的框架,但是很多交互操作(例如鼠标拖动,缩放,旋转,俯视图/主视图等)是没有的,还需要程序员自己写代码实现。


(1)QGLWidget 是Qt OpenGL模块,但是从其官方说明,推荐在Qt5.4 之后,使用QOpenGLWidget类,具体说明如下: Note: This class is part of the legacy Qt OpenGL module and, like the other QGL classes, should be avoided in the new applications. Instead, starting from Qt 5.4, prefer using QOpenGLWidget and the QOpenGL classes.


(2)QGLWidget的支持最高到Qt5.4.2,如果对于新软件新平台的开发,则按照官方推荐的QOpenGLWidget类。


(3)而开源项目ccViewer和libQGLViewer等等则实现了QOpenGLWidget二次封装和扩展,使得用户更容易实现3D绘图与交互。 以下是详细介绍与网站链接。


CloudCompare


https://github.com/CloudCompare/CloudCompare


里面有ccViewer小工具:


https://github.com/CloudCompare/CloudCompare/tree/master/ccViewer


从源码\CloudCompare-master\libs\qCC_glWindow\include\ccGLWindow.h可以看到ccGLWindow 派生于QOpenGLWidget


using ccGLWindowParent = QOpenGLWidget;

//! OpenGL 3D view

class CCGLWINDOW_LIB_API ccGLWindow : public ccGLWindowParent, public ccGenericGLDisplay

详情见我的另一篇博文:


https://libaineu2004.blog.csdn.net/article/details/108321139



libQGLViewer


libQGLViewer 是一个用以简化了Qt开发OpenGL三维浏览器的C++库。它提供了一些典型的3D查看器的功能,如能够使用鼠标移动/缩放图像等。


从源码qglviewer.h可以看到QGLViewer派生于QOpenGLWidget


class QGLVIEWER_EXPORT QGLViewer : public QOpenGLWidget

另外,libQGLViewer源代码需要自己编译,生成dll文件。


http://libqglviewer.com/


https://github.com/GillesDebunne/libQGLViewer


image.png



Candle


https://github.com/Denvi/Candle



QtImGui


https://github.com/ocornut/imgui


https://github.com/seanchas116/qtimgui


相关文章
|
7月前
QT4.7版本的OPENGL的3D旋转模型例子
QT4.7版本的OPENGL的3D旋转模型例子
141 0
QT+OpenGL鼠标操作和模型控制
光线追踪法 从鼠标投射 3D 射线, 通过摄像机,进入场景,然后检查该光线是否与某个对象相交。
383 0
|
4月前
|
Linux
关于linux的qt发布(linuxdeployqt)中opengl版本过高的解决
关于linux的qt发布(linuxdeployqt)中opengl版本过高的解决
|
异构计算
QT+OpenGL高级数据和高级GLSL
● OpenGL中的缓冲区 对象管理特定的GPU内存 ● 在将缓冲区绑定到特定的缓冲区目标时候赋予它意义 ● OpenGL在内部会保存每个目标(缓冲区)的引用,并且根据目标以不同的方式处理缓冲区。
163 0
|
7月前
|
机器学习/深度学习 API vr&ar
Qt, OpenCV与OpenGL协同作战:图像处理与三维图形界面的完美结合
Qt, OpenCV与OpenGL协同作战:图像处理与三维图形界面的完美结合
1063 4
|
存储 异构计算
QT+OpenGL深度测试
在前面的文章中,我们渲染了一个3D箱子,并且运用了深度缓冲来防止阻挡的面渲染到其他面的前面。 现在大部分的GPU都提供一个叫做提前深度测试(Early Depth Testing)的硬件特性。提前深度测试允许深度测试在片段着色器之前运行。只要我们清楚一个片段永远不会是可见的(它在其他物体之后),我们就能提前丢弃这个片段。
133 0
QT+OpenGL 摄像机
OpenGL本身没有摄像机的定义,但是我们可以通过把场景中的所有物体往相反方向移动的方式来模拟出摄像机,产生一种我们在移动的感觉。
182 0
|
存储
QT+OpenGL开始3D
顶点坐标起始于局部空间,它在之后会变为世界坐标,观察坐标,裁减坐标,并最后以屏幕坐标的形式结束。
122 0
|
7月前
|
Linux API iOS开发
【Qt 渲染引擎】一文带你了解qt的三种 渲染引擎,包括栅格引擎(Raster)、OpenGL 和本地绘图系统
【Qt 渲染引擎】一文带你了解qt的三种 渲染引擎,包括栅格引擎(Raster)、OpenGL 和本地绘图系统
234 0
|
7月前
Qt+OpenGL 打砖块游戏
Qt+OpenGL 打砖块游戏
94 0