我有一个纹理,我想在运行时修改它的alpha通道
有没有办法在纹理的alpha通道上绘制?
或者用另一个纹理替换通道?
谢谢,
SW。
答案 0 :(得分:2)
好的,根据你的评论,你应该做的是使用像素着色器。您的源图像甚至不需要Alpha通道 - 让像素着色器应用alpha。
实际上你应该在GPU上计算alpha通道的值(即:运行流体求解器)。
您的着色器可能看起来像这样:
float4 main(float2 uv : TEXCOORD) : COLOR
{
float4 c = tex2D(textureSampler, uv);
c.A = /* calculate alpha value here */;
return c;
}
一个好的起点是XNA Sprite Effects样本。
甚至会产生与您正在做的相似的效果:
http://create.msdn.com/assets/cms/images/XNA_SpriteEffects_02_small.jpg
样本中的效果从第二个纹理读取,以获取绘制时第一个纹理的alpha通道计算值。