缩放顶点坐标,但保持alpha通道值相同? GLSL

时间:2014-12-04 04:26:30

标签: opengl glsl shader fragment-shader vertex-shader

我必须显示两个纹理并且它们重叠。其中一个纹理具有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

}

任何帮助将不胜感激。

0 个答案:

没有答案