标签:完全 qt开发 pap rman graphic form 目的 兼容性 定义
目录
最近用Qt3D做了一个三维显示的项目,过程比较艰辛,主要是Qt3D这个库虽然推出了有几年,但是资料并不多,官方的例程比较少且大多是QML的,虽然他本身是完全支持C++的,而API 接口的文档写得又比较简略,用的人少产生的资料就更少了,在google和stackoverflow 搜索相关问题也往往找不到答案,在做项目的过程中我收集了很多资料,在这里列出来分享给大家,同时欢迎大家找到好的相关资料在评论里留言,我会更新到博客中。
Qt3D 是Qt官方支持的3D实时渲染引擎,和Qt一样几乎支持所有平台,对OpenGL pipeline进行了封装,支持C++ 和脚本语言QML,甚至支持 python (pyQt和pySide), 目的是为了让开发者快速地开发出三维渲染的程序。与OSG、VTK和OGRE等类似,但是是Qt原生的,对于Qt开发来说兼容性会更好,可以自然地使用Qt的信号-槽机制。
Qt3D 具有以下基本特性:
还有 物理引擎、碰撞检测和游戏AI等。
Qt3D 主要由KDAB 设计、开发和维护,和Qt Company 由密切合作, Qt3D 模块集成在Qt5.5以后的版本中, 版本越高功能越完善且一些BUG会被修复。
Qt3D 有两种License: GNU LGPL v3协议和GNU GPL v2协议。
Qt3D 的利和弊我只能根据我的直观体验来写,未必客观,但是真实。
最终建议是:如果你使用Qt开发,那么使用Qt3D 将会很方便,否则,则没必要。
如果要使用Qt3D,那么以下知识是必须的:
Entity - mesh + material( + transform)
掌握以下概念,差不多足够Qt3D 入门使用 :
https://ervin.ipsquad.net/slides/talks/ak2017-qt3d-advances/ak2017-qt3d-advances.pdf
https://www.kdab.com/wp-content/uploads/stories/Qt_3D_basics_whitepaper_Part2.pdf
https://www.kdab.com/wp-content/uploads/stories/qt3dinteraction.pdf
https://blog.qt.io/blog/2016/06/16/introducing-qt-3d/
Qt3D 是 ECS(Entity-Component-System)架构;什么是ECS架构
https://zhuanlan.zhihu.com/p/30538626
补充:ECS的利弊
- ECS Pros:
- Avoids deep, wide, complex inheritance hierarchies
- Flexible – can change object behaviour at runtime (add/remove components)
- Extensible – add more component types later
- Qt 3D ECS is high performance by Aspects (Systems) offloading work to backend
- ECS Cons:
- Often new to OOP programmers – takes a while to adjust thinking
- More objects – Entity plus Components
Qt3D 中使用着色器 Shader
qt3d 源码,Github上有源码(下面这个镜像在网页端支持代码跳转!)
qt3d
Qt3D Editor 一个可以用来实验 mesh + camera + transform + render 效果的。主要由QML写得,核心类是由Cpp写得。下面是效果。
标签:完全 qt开发 pap rman graphic form 目的 兼容性 定义
原文地址:https://www.cnblogs.com/sunchaothu/p/11141212.html