Qt 顶点着色器,用于在QQuickItem中创建几何体并设置其动画

Qt 顶点着色器,用于在QQuickItem中创建几何体并设置其动画,qt,qml,qtquick2,Qt,Qml,Qtquick2,我正在阅读关于这个Qt bug报告的评论: 该bug报告建议使用顶点着色器,使用 QSGGeometry < /C> >并在C++中动画化。我知道QML支持S着色,但是如何从 QSGGeometry < /COD>材质中访问着色器,该材料是通过C++代码子类 QQuestION>代码>(我解释bug报告来建议)处理的。在QML中访问的顶点着色器通常用于变形现有几何体,而不是创建新几何体或设置几何体动画 还是报告建议完全绕过QML来完成此任务 将数据传递给原始图形的顶点着色器并将GL视口作为快速

我正在阅读关于这个Qt bug报告的评论:

该bug报告建议使用顶点着色器,使用<代码> QSGGeometry < /C> >并在C++中动画化。我知道QML支持S着色,但是如何从<代码> QSGGeometry < /COD>材质中访问着色器,该材料是通过C++代码子类<代码> QQuestION>代码>(我解释bug报告来建议)处理的。在QML中访问的顶点着色器通常用于变形现有几何体,而不是创建新几何体或设置几何体动画

还是报告建议完全绕过QML来完成此任务


将数据传递给原始图形的顶点着色器并将GL视口作为快速项是非常酷的,但我认为QML着色器不是为此而设计的。

QQuickItem
的子类中,覆盖
updatePaintNode()
方法应该创建(并在需要时更新)
QSGGeometryNode
的实例,并使用为特定几何体类型配置的
QSGGeometry
对其进行设置。这将允许您直接控制顶点缓冲区对象(仅一个,但具有任意顶点属性布局)并使用自定义着色器

请参阅qt文档中的“自定义几何体”。整个项目是正式的


更有趣的例子是。它使用
QQuickWindow::beforeRendering()
信号来运行完全任意的OpenGL代码。在本例中,自定义渲染转到帧缓冲区对象。稍后,此FBO用作
QSGSimpleteTextureNode
子类中的纹理。

QSGGometry的API似乎与OpenGL绘图API不完全相同,对吗?我找不到关于实际API的信息,也不知道如何使用它,这是常用的绘图工具集吗
QSGGometry
是一种用于VBO的抽象。使用顶点和片段着色器完成绘制。