【发布时间】:2014-04-03 04:30:09
【问题描述】:
我正在尝试获取当前纹理的一部分并将其设置为 50% 透明。我发送了四个值,表示我想要透明的矩形。然而,似乎每次 coord.x/coord.y 都设置为 (0, 0),导致当我发送从 (0, 0) 开始的任何矩形时,整个图像都是透明的。
我还是 GLSL 的新手,并且可能会遇到这个错误。任何有关正确方法的指针将不胜感激!
传入的值
sprite.Shader.SetParameter("texture", sprite.Texture);
sprite.Shader.SetParameter("x1", 0);
sprite.Shader.SetParameter("x2", 5);
sprite.Shader.SetParameter("y1", 0);
sprite.Shader.SetParameter("y2", sprite.Height - 1); // sprite.Height = 32
transparency.frag
uniform sampler2D texture;
uniform float x1;
uniform float x2;
uniform float y1;
uniform float y2;
void main() {
vec2 coord = gl_TexCoord[0].xy;
vec4 pixel_color = texture2D(texture, coord);
if ((coord.x > x1) && (coord.x < x2) && (coord.y > y1) && (coord.y < y2))
{
pixel_color.a -= 0.5;
}
gl_FragColor = pixel_color;
}
【问题讨论】: