0

我在一个 OpenGL 项目中。

我有一些由相同透明材料(例如 alpha = 0.2)制成的对象(仅说 2 个)。两个物体相交。

如何使交叉部分看起来与其他部分相同(没有边框,没有不同的颜色),所以太对象看起来像一个?

4

1 回答 1

1

我不确定你是否真的想这样做。无论如何我都会回答,但首先让我告诉你为什么我认为你不想要那个。

在现实生活中,想象一个红色的彩色玻璃和一个蓝色的玻璃。如果您以它们部分重叠的方式查看它们,则重叠部分显然具有不同的颜色(紫色)。如果你拿到 2 个红色眼镜并看着它们,使它们重叠,重叠的部分更红。这正是您的 OpenGL 程序中正在发生的事情。

现在一般来说,当您有多个透明对象时,您需要根据它们与您眼睛的距离和您所看的方向对它们进行排序。然后你从最远到最近绘制它们。这本身并不是一个简单的任务!想想两个交叉的物体。

实现您想要的一种方法是对透明对象进行排序,但从最近的对象绘制到最远的对象。这样,您实际上不允许对同一像素进行两次透明处理。不是一个好主意。

另一种方法是对这些特殊类型的对象做一些非常具体的事情。我说特殊类型,因为显然它们中的两个重叠并没有做出任何改变!您可以通过绘制到模板缓冲区而不是绘制缓冲区来做您想做的事情,然后在整个屏幕上绘制一个具有您想要的颜色的矩形,但仅匹配该模板。

于 2012-05-01T13:02:56.973 回答