我正在使用OpenGL项目。
我有一些物体(只说2)由相同的透明材料制成(例如,alpha = 0.2)。两个物体相交。
如何使交叉部分看起来与其他部分相同(没有边框,没有不同的颜色),所以太多的对象看起来像一个?
答案 0 :(得分:1)
我不确定你是否真的想要这样做。无论如何我会回答,但首先让我告诉你为什么我认为你不希望这样。
在现实生活中,想象一下红色的彩色玻璃和一个蓝色的玻璃。如果以它们部分重叠的方式观察它们,重叠部分显然具有不同的颜色(紫色)。如果你得到2个红色眼镜并看它们有重叠,重叠的部分会更红。这正是您的OpenGL计划中发生的事情。
现在一般情况下,当您有多个透明对象时,您需要根据它们与眼睛的距离和您正在查看的方向对它们进行排序。然后你从最远到最近画它们。这本身并不是一项简单的任务!想想两个交叉的物体。
实现所需内容的一种方法是对透明对象进行排序,但是从最近的对象绘制到最远的对象。这样,您几乎不允许对同一像素的透明度进行两次。不是个好主意。
另一种方法是对这些特殊物体做一些非常具体的事情。我说特别的,因为显然其中两个重叠不做任何改变!您可以通过绘制到模板缓冲区而不是绘制缓冲区来执行您想要的操作,然后在整个屏幕上绘制一个具有所需颜色的矩形,但只匹配该模板。