首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >三维实体始终可见,即使在另一个实体后面也是如此

三维实体始终可见,即使在另一个实体后面也是如此
EN

Stack Overflow用户
提问于 2018-08-23 18:47:38
回答 2查看 391关注 0票数 0

有没有一种简单的方法可以一直显示3D实体,即使那个实体隐藏在另一个实体后面?例如,我希望当线条位于网格曲面之后时,它们始终显示为事件。

我使用Qt3D框架。

EN

回答 2

Stack Overflow用户

发布于 2018-08-23 18:58:14

假设您正在谈论Qt3D框架,我想扩展一下Rabbid76的答案。

要在Qt3D框架中禁用深度测试,请向渲染内容的framegraph分支添加一个QRenderStateSet (例如,作为QViewPort的那个),并向其添加一个QDepthTest。然后,将QDepthTest的深度函数设置为always。这样,深度测试将始终通过,并且还将根据绘制顺序绘制背面的实体。可以使用QSortPolicy将绘图顺序调整为从后到前。

但是,当相机位置发生变化,并且您始终希望绘制的实体位于前面时,这将不起作用。我建议您添加另一个framegraph分支,并使用QLayerFilter来仅停用此实体的深度测试。

如果你的实体在停用深度测试时看起来很奇怪(很可能是复杂的对象),你可以用一个QClearBuffers替换QDepthTest,然后简单地清除深度缓冲区。

看看我的答案here,我展示了一个带有深度测试的自定义框架图的示例。

票数 2
EN

Stack Overflow用户

发布于 2018-08-23 18:50:03

如果禁用深度测试,则始终在先前绘制的几何体的顶部绘制几何体(如线)。可以通过以下方式禁用深度测试:

代码语言:javascript
复制
glDisable(GL_DEPTH_TEST)

请参阅glEnable

作为另一种选择,深度测试函数可以设置为让片段始终通过深度测试。在Qt中,这可以通过使用枚举器常量Qt3DRender::QDepthTest::Always的类QDepthTest来完成。

在这种情况下,您必须注意几何图形的绘制顺序。您必须找到一种方法,通过使用深度测试函数Qt3DRender::QDepthTest::Less首先渲染多边形(不透明几何体)。在此之后,您必须使用深度测试函数Qt3DRender::QDepthTest::Always在顶部呈现线条。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51984027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档