Opengl 缩放顶点坐标,但保持alpha通道值不变?GLSL

Opengl 缩放顶点坐标,但保持alpha通道值不变?GLSL,opengl,glsl,shader,fragment-shader,vertex-shader,Opengl,Glsl,Shader,Fragment Shader,Vertex Shader,我必须显示两种纹理,它们重叠。其中一个纹理具有alpha通道,因此可以将其混合。但是,由于纹理坐标聚集在一起,我决定缩放它们gl_TexCoord[0]=gl_MultiTexCoord0*2.0 这不太管用,因为它也会屏蔽alpha通道。如何缩放纹理坐标,但保持alpha通道值不变 下面是GLSL着色器 顶点着色器: void main() { gl_TexCoord[0] = gl_MultiTexCoord0*2.0; //this

我必须显示两种纹理,它们重叠。其中一个纹理具有alpha通道,因此可以将其混合。但是,由于纹理坐标聚集在一起,我决定缩放它们<代码>gl_TexCoord[0]=gl_MultiTexCoord0*2.0 这不太管用,因为它也会屏蔽alpha通道。如何缩放纹理坐标,但保持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

}

任何帮助都将不胜感激

不清楚缩放alpha是什么意思:
grass
中的alpha通道不是来自纹理坐标,它来自
textureSample_1
中的纹理,就像颜色一样。您正在缩放
gl_TexCoord[0]
的所有四个组件,但只有
s
t
组件实际用于纹理查找;另外两个没有效果。
gl\u MultiTexCoord0.a
乘以2这一事实是无关紧要的,因为它没有任何用途。@Wyzard,当我运行代码而不乘以2时,草是在正确的位置,但它看起来很可怕。但是,相乘后,效果会更好,但位置不同。将纹理坐标缩放2会将纹理的外观大小缩小为高的一半和宽的一半。您将在以前由一个填充的空间中获得图像的四个副本。就这些。@Wyzard,我需要缩放纹理坐标,你能告诉我正确的方法吗?你正在缩放纹理坐标。不清楚你的实际问题是什么。你能添加一些图片来说明问题所在吗?