0

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

谢谢,
西南。

4

1 回答 1

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示例是一个很好的起点。

甚至还有与您正在做的类似的效果:(来源:msdn.com

示例中的效果从第二个纹理读取,以获取用于计算第一个纹理在绘制时的 Alpha 通道的值。

于 2010-11-05T03:21:55.983 回答