基本上,我想为三角形的每个角提供3个纹理,并从一个纹理插值到另一个纹理,就像在角上使用glColor()插值颜色一样。
编辑:由于这似乎不可能通过纹理组合器,我愿意用着色器来做。
这是我现在拥有的片段着色器代码:
vec4 c = gl_Color;
gl_FragColor = texture2D(Texture0, TexCoord0)*c.r+texture2D(Texture1, TexCoord1)*c.g+texture2D(Texture2, TexCoord2)*c.b;
我使用glColor();将颜色(1,0,0),(0,1,0),(0,0,1)推到每个三角形的角落,然后我读取颜色,看看我需要相应地混合多少纹理。
现在的问题是,我不能在我的顶点上使用颜色了,所以我问,告诉我的片段着色器如何混合纹理+能够使用glColor()在三角形的每个角落应用一些着色的最佳方法是什么?
Edit2:我设法通过发送一个3d文本来告诉混合比率,但这是最好的方法吗?
我认为不使用着色器是不可能的。在你的OpenGl代码中,我不知道OpenGl可以知道哪个纹理影响到每个角落。这将需要一个顶点属性(而不是颜色或纹理坐标),如果没有着色器,这是不可能的。
然而,通过在第二个纹理上使用alpha混合(从顶点颜色中选择alpha值),也许两个纹理可以实现。但我不确定。