我正在使用SFML.net 2.1。 我已经成功实现了一个片段着色器,它根据团队颜色改变了精灵的颜色。
但是,当我将完整精灵的颜色设置为半透明颜色时
让我们说RGBA(255,255,255,100)
生成的精灵不像预期的那样是半透明的,但保持完全不透明。 如果我注释掉着色器,我的代码就可以工作,但只要着色器处于活动状态,它就无法正常工作。
这是我的着色器代码,以防可能出现问题:
uniform sampler2D texture;
uniform vec4 sourceColor;
uniform vec4 targetColor;
uniform float tolerance;
void main()
{
// lookup the pixel in the texture
vec4 pixel = texture2D(texture, gl_TexCoord[0].xy);
if(abs(pixel.r - sourceColor.r) < tolerance && abs(pixel.g - sourceColor.g) < tolerance && abs(pixel.b - sourceColor.b) < tolerance)
{
gl_FragColor = targetColor;
}
else
{
gl_FragColor = pixel;
}
}
非常感谢任何帮助。
修改
经过进一步调查,在绘制对象时,似乎没有考虑对象的整个“颜色”字段,而不仅仅是alpha通道
EDIT2:
我通过将每个帧的当前颜色传递给着色器找到了解决此问题的方法。但是,我很想知道它应该如何完成。
答案 0 :(得分:0)
你实际上是将值设置为这样的整数吗?
而不是(255,255,255,100),尝试(1,1,1,0.4)