QML 可以替代 Qt 中的 OpenGL 吗?

Posted

技术标签:

【中文标题】QML 可以替代 Qt 中的 OpenGL 吗?【英文标题】:Can QML replace OpenGL in Qt? 【发布时间】:2016-04-03 06:56:34 【问题描述】:

据我所知,QML 与 OpenGL 做同样的事情,对吧?那么我可以用 QML 完全替代 OpenGL 吗?

QML 和 OpenGL 的基本区别是什么?

人们什么时候更喜欢 QML 而不是 OpenGL,反之亦然?

【问题讨论】:

你的知识不对,qml和OpenGL是两个完全不同的东西,第一个是声明式语言,第二个是图形api。 @ddriver:您应该将该评论作为答案 也许您的意思是 Qt Quick,因为 QML 是一种完全脱离任何图形的声明性语言,可用于例如build systems。 【参考方案1】:

你的知识不对,QML和OpenGL是两个完全不同的东西,第一个是声明性语言,第二个是图形API。

使用 QML 的 QtQuick 通常将 OpenGL 用于其图形,但这是您无法访问的后端(实际上在最近的版本中更易于访问,但我预计不会有多少人会进行调整那个,即使他们这样做了,也将是 C++,而不是 QML)。

有Qt3D,它有一个QML API,但它只是一些基本的东西,而且它是高级的——绝不可以替代非常低级的OpenGL。这意味着使用 Qt3D 放置一些 3D 模型、相机、材质等会容易得多,通常不会直接在 OpenGL 中执行这些操作,而是使用构建在 OpenGL 之上的 API。

【讨论】:

+1,关于“你没有任何访问权限的后端”:可以将 QQ 与自定义 opengl 阴影相结合,调整 opengl 设置或将其与其他自定义 opengl 代码集成。所以它不仅仅是一个隐藏的实现细节。

以上是关于QML 可以替代 Qt 中的 OpenGL 吗?的主要内容,如果未能解决你的问题,请参考以下文章

使用 OpenGL 进行 Qt 渲染

可以为特定项目禁用 Qt 5.8 中的 QML 缓存吗?

Qt5快速qml测试和opengl渲染的问题

Qt5 和 Qt Quick 2 中的自定义实时绘图

不支持opengl,是否意味着不能用QML开发

C++ 和 QML 中的 QT QML 项