0

我有一个通过 alpha 混合实现启用透明度的测试应用程序。该应用程序是使用 SlimDX 在 C# 中构建的。但是,在我的一个应用了 alpha 混合的对象上,我得到了一个奇怪的“缺失三角形”效果(见下文)。

在此处输入图像描述

该物体几乎是一个圆柱体。

我想知道在 3D 计算机图形学和/或使用 alpha 混合方面更有经验的人是否能够指出我正确的方向,所以我可能会理解这个结果 - 并希望将其删除。

编辑

我尝试使用与顺序无关的混合着色器,得到了相同的结果。看起来好像像素/片段由于深度测试失败而被丢弃。这对我来说没有任何意义。

4

1 回答 1

1

您需要选择一个与顺序无关的混合函数,或者尝试沿视图轴对三角形进行排序(这是不可能的)。看看为什么在这里。

编辑:

问题是 Z 缓冲区阻止 OpenGL 绘制位于已绘制对象后面的像素。一般来说,这很方便,但是当前面的东西是半透明的时,你需要看到它后面的东西。

要获得正确的几何形状:

  • 将您的深度缓冲区设置为只读模式。
  • 选择与顺序无关的混合函数。
于 2011-10-14T13:55:55.537 回答