- 主题:QML也不是一无是处
Qt 的图形技术支持是这样的:
1. QtGui 里面提供了 OpenGL ES2 支持,程序员可以认为,只要 Qt 跑起来就能使用 OpenGL ES2 功能。
在 Windows 平台上有三种情况,如果显卡驱动一切正常,那就使用显卡的 opengl 驱动,如果 opengl 驱动不能用,就使用 ANGLE 库,把 OpenGL 命令转换成 DirectX 命令,效率没太大差别,最后,如果这个 Windows上面压根没显卡驱动(比如刚装完系统的时候),会使用一个软的 OpenGL 实现来渲染。
2. QtWidgets 实际并不会使用这个 OpenGL 功能,所以虽然默认提供了,并没有什么卵用。布署的时候不用考虑。编译的时候也不用考虑,反正都是通过 LoadLibary() 来调用的,不需要相关的头文件。
3. QtQuick,也就是楼主说的 QML,不止会使用 OpenGL 来渲染,还支持用 DirectX/Vulkan 来渲染。但总是优先使用 OpenGL,程序员要手动设置一个选项。
4. 很多例外,比如程序员可以强制禁用 opengl 或者强制用 directx,这些都是在 configure 命令行里面设置,属于裁剪 qt 的知识。具体的自己看文档吧。
【 在 z16166 (Netguy) 的大作中提到: 】
: OpenGL驱动兼容性咋样,感觉windows上如果能用directx渲染更好
--
修改:hgoldfish FROM 117.24.206.*
FROM 117.24.206.*
支持。。你看我上面讲的第3条,QtQuick 能直接采用 meta/directx/vulkan 渲染,最近还搞出了一个硬件渲染层出来,估计会在 qt6 成熟。
至于 QtWidgets 已经是拍死的前浪,什么都不支持,已经没人在乎了。
【 在 PGP (---) 的大作中提到: 】
: opengl已经不更新了,qt也不支持metal,不直接支持directx,真的是所有层面都在去全球化
--
FROM 112.47.122.*
QtQuick 就包含 Qt3D 啊。可以从 maya 里面导入模型,渲染到 Qt3D 里面,可以说,Qt3D 实际上已经是半个游戏引擎了。QML 就是游戏引擎的脚本语言。
【 在 PGP (---) 的大作中提到: 】
: Qtquick能这么搞,但如果用户如何需要3d引擎渲染一个3d场景呢,是不是只能用unreal了
--
FROM 112.47.122.*
貌似可以。。我没用到这么高级的东东。。你找找文档看看。
【 在 PGP (---) 的大作中提到: 】
: 不错不错,我现在的问题是针对我自己的问题写了一堆shader,不然渲染慢的要死,qt3d里能把这些shader简单的加入到渲染流程吗
--
FROM 112.47.122.*
还是不一样。
QtWidgets/C++ 走 SSE/AVX 加速,单线程地渲染。
QtQuick/QML 走软 OpenGL ES2 实现,背后是 Mesa(llvmpipe) 编译成 CPU 指令并行执行。我的新笔记本没有显卡驱动,KDE 自动使用 Mesa 渲染,动画效果比我的老核显渲染还好。
简单地画线画框,前者快。渲染透明和动画,后者快。
【 在 cn62 (cn62) 的大作中提到: 】
: 如果设置Software渲染,Quick和Widgets是不是一样了?
: 发自「今日水木 on x」
--
修改:hgoldfish FROM 112.47.122.*
FROM 112.47.122.*