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