gpt4 book ai didi

c# - 2D Passes.apply() XNA 4.0

转载 作者:行者123 更新时间:2023-11-30 22:27:27 26 4
gpt4 key购买 nike


我目前正在为我的 XNA 游戏学习效果文件语言“HLSL”。然而;我遇到了将效果应用到我的 SpriteBatch 的问题。

我的效果文件看起来像这样,并使渲染纹理为白色。 :]

float4 PSFunction(float2 coord : TEXCOORD0) : COLOR0
{
return float4(0, 0, 0, 1); // Return a white pixel
}

technique Sample
{
pass pass0
{
PixelShader = compile ps_2_0 PSFunction();
}
}

当我使用以下参数开始我的 SpriteBatch 时,它正常工作:

SpriteBatch.Begin(0, null, null, null, null, SampleEffect);

但是; SpriteBatch.Begin 方法不接受多重效果。所以我试着去做

SampleEffect.CurrentTechnique.Passes[0].Apply();

打电话之前

SpriteBatch.Begin();

但什么也没发生,因此我尝试了几种不同的方法。比如

SampleEffect.CurrentTechnique.Passes["pass0"].Apply();

但是还是不行。所以我使用 object.ReferenceEquals 函数验证了效果附加到正确的 GraphicsDevice,但它等于正确的 graphicsDevice。我究竟做错了什么?我如何将多个效果附加到我的 SpriteBatch?

提前致谢,拉斯穆斯:]

最佳答案

您不能同时使用多个效果 channel 进行绘制。相反,您需要多次绘制同一事物,然后将结果组合在一起。

举个例子,想象一下模拟具有 3 种效果的光照:环境光、漫射光和镜面光。这些中的每一个都将由一个效果 channel 表示。您可以按顺序渲染它们,相加将结果组合在一起(就像光相加一样)。

如果你想组合几个效果,你需要手动指定它们如何组合。为此,您通常会遍历要使用的效果 channel ,一次应用一个,在每次迭代时绘制场景。

关于c# - 2D Passes.apply() XNA 4.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11274535/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com