QT3D-如何不绘制网格
Qt3D - how to not draw the meshes?
我不想在场景上绘制一些对象。在正常的OpenGL中,我们只需要调用与绘制网格有关的函数。
不幸的是,我在QML中没有发现这种"功能"。该实体不包含"可见性"属性等。当然,我们可以尝试将统一发送到着色器并在需要时丢弃渲染 - 它将起作用,但这种方法看起来不好。
应该在CPP文件中创建QML或完整渲染功能来做到这一点?
是的。
最简单的解决方案是从您的实体中删除材料。您会有这样的东西:
Entity {
property bool visible: true // or ideally, dynamically read from a c++ property or whatever suits you
Material {
id: myMaterial
// stuff
}
GeometryRenderer {
id: myRenderer
// stuff
}
components: visible ? [myMaterial, myRenderer] : []
}
另一个解决方案(也许更困难)是在材料中使用的效果中使用过滤器。效果组件将具有一个或几个渲染通道。这些渲染通行证中的每一个都可以具有过滤器键:
RenderPass {
id: myPass
filterKeys: [ FilterKey { name: "PassType"; value: "customFilterIdString" } ] // <-- This line here
renderStates: [
BlendEquationArguments {
...
},
...
]
}
可以使用RenderPassFilter组件在渲染图中过滤每个渲染通行证。这使您可以跳过整个对象并订购通过的方式。这有点更高级,我认为如果您只想隐藏特定的对象,我不需要它,但请不要犹豫阅读DOC并使用这些组件
最简单的方法实际上是将实体的启用属性设置为false。
对于更精细,更通用的控件,您可以使用Qlayer组件。
相关文章:
- QuadTree只在窗口的右上角绘制
- 绘制旋转的三角形
- 如何使用 sdl2 快速绘制像素网格?
- 使用 OpenGL 绘制 8 x 15 矩形网格C++ - 崩溃
- QT3D-如何不绘制网格
- 如何在C++中创建一个网格,这将允许我将每个索引设置为一个向量,以便以后操作该向量,然后绘制它
- c++OpenGL发布用存储在对象中的vbo和vao绘制网格
- FreeGlut网格图未完全以特定值绘制
- 绘制网格最有效的方法是什么
- 想要在从搅拌机导入的实体3D对象上绘制线框网格
- 绘制多边形网格时出现 Opengl 性能问题
- 如何在opengl中绘制屏幕一小部分大小的正方形网格
- OpenGL优化网格绘制(VAO?无索引?)
- C ++ OpenGL 只绘制 1 个点而不是网格
- openGL在将参数传递给要绘制的函数时不绘制网格
- OpenGL正在绘制UV贴图而不是网格
- 在网格中绘制具有捕捉功能的线条
- 在vtkXYPlotActor中绘制网格线
- 使用glDrawElements绘制3D网格时的奇怪行为
- 绘制多个网格到不同的位置(DirectX 12)