XNA - 渲染到纹理的Alpha通道

时间:2010-11-04 20:02:22

标签: xna rendering textures render-to-texture

我有一个纹理,我想在运行时修改它的alpha通道 有没有办法在纹理的alpha通道上绘制?
或者用另一个纹理替换通道?

谢谢,
SW。

1 个答案:

答案 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通道计算值。