如果你有一个复杂的形状(多边形),在OpenGL ES 2.0中用GL_REPEAT
映射到它的纹理,以及构成多边形边缘的所有点,是否可以做一些会使边缘与背景混合?
我的意思是使边缘更平滑,因此纹理形状看起来不会在边缘和角落之间出现锯齿状。
答案 0 :(得分:2)
嗯,我不确定我是否理解你在尝试的东西,但是你总是可以通过使用alpha混合为纹理设置一个alpha通道来控制多边形的不透明度,从而减少边缘附近的alpha值。多边形。当然,在这种情况下,纹理与多边形强烈耦合,并且它不适用于在整个多边形上重复多次的纹理。但在这种情况下,您可以使用仅包含Alpha通道的第二个纹理,并以不同方式映射到多边形(使用不同的纹理坐标)。
另一个选项,当您使用多边形细分更精细,具有一些内部顶点和一些边界顶点时,可能更容易实现,只是为每个顶点提供一个附加属性,其中包含顶点的alpha值。因此,您给内部顶点的alpha值为1(完全不透明),边界顶点的alpha值为0(完全透明)。然后,您将此值从顶点着色器作为varying
变量提供给片段着色器,这样就可以在从内部到边界的三角形内插入alpha(或不透明度),从而实现从不透明到透明(虽然只是线性插值,在你的情况下可能就足够了)。在片段着色器中,您只需将其传递给输出颜色的alpha,以便在Alpha混合中使用。
这些只是一般性的想法,假设您知道着色器如何工作以及如何使用Alpha混合。如果答案不充分,请随意提出更具体的问题。