opengl ModernGL深度测试忽略后面的顶点(有时?)

7dl7o3gd  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(150)

在渲染这个立方体时,我使用moderngl DEPTH_TEST在正确的深度上正确地绘制面,其工作情况如下所示:

但是,我想让立方体透明。在给它一个稍微透明的纹理后,它呈现如下:

由于某种原因,立方体前面后面的部分被忽略,导致它只被染成红色。
旋转时的外观如下所示:

有些Angular 行得通,有些Angular 不行。
当我禁用深度测试时,所有的东西都正确地呈现了,但是顺序不对。有什么办法可以修复这个问题吗?(使用python moderngl)

ccrfmcuu

ccrfmcuu1#

Blending在启用Depth Test时无法正常工作,因为在混合之前,深度测试会丢弃已绘制对象后面的碎片。您必须按照从后到前的正确顺序绘制图元,才能使其正常工作。另请参阅OpenGL depth sorting和OpenGL:透明纹理问题。
请注意,OpenGL不是游戏引擎,它只是一个低级API,它完全按照您告诉它的顺序执行您告诉它要执行的操作。

相关问题