我必须显示两个纹理并且它们重叠。其中一个纹理具有alpha通道,因此可以将其混合。但是,由于纹理坐标聚集在一起,我决定缩放它们。 gl_TexCoord[0] = gl_MultiTexCoord0*2.0;
这不太有效,因为它也会对alpha通道进行sclaes。如何缩放纹理坐标,但保持alpha通道值相同?
以下是GLSL着色器。
顶点着色器:
void main()
{
gl_TexCoord[0] = gl_MultiTexCoord0*2.0; //this is where I scale the texture
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}
片段着色器:
uniform sampler2D textureSample_0;
uniform sampler2D textureSample_1;
void main()
{
vec4 grass=texture2D(textureSample_1, gl_TexCoord[0].st);
vec4 sand = texture2D(textureSample_0, gl_TexCoord[0].st);
gl_FragColor = grass*grass.a+sand*(1.0-grass.a); //alpha channel is also scaled here
}
任何帮助将不胜感激。