比较OpenGL ES 2.0中的纹理

时间:2013-07-07 22:20:50

标签: compare opengl-es-2.0 textures alpha

我正在使用LibGDX框架开发一个绘图应用程序,尽管这应该主要与OpenGL相关。

基本上,我正在寻找一种方法来防止我使用的精灵在完全不透明时彼此重叠,因为这会产生很多令人不快的效果。将1.0 alpha的精灵绘制到纹理上然后将纹理绘制回所需的alpha会产生我想要的效果,但该方法将涉及在用户绘图时不断重新创建纹理,这太过于密集而无法生存。 / p>

从我所看到的情况来看,对我来说,最好的选择,就是在片段着色器中从另一个中减去其中一个精灵。我很确定这条路线是可行的,但是我无法弄清楚如何在片段着色器中实际比较它们。两者都将使用相同的单一纹理,但它们将位于不同的位置。是否真的可以像这样比较它们,或者是否有合适的替代方案?

1 个答案:

答案 0 :(得分:1)

实际上不可能比较片段或顶点着色器中应用于不同几何体(精灵)的2个纹理,因为它们将在着色器的不同迭代上,在不同的时间点进行渲染。

你可以有两个或更多的纹理单元来采样和减去多个纹理,但它们必须应用于相同的顶点(精灵),我认为这不是你想要的。

更好的方法是在渲染之前计算精灵的接近度。然后你可以改变它们的位置,或者将关系作为一个统一的值传递给着色器,然后可以用它来改变精灵的片段像素的alpha值。