3
遮罩XNA中2D子画面的最佳方法?
我目前正试图掩盖一些精灵。我没有用语言解释它,而是制作了一些示例图片: 遮盖区域(白色) 现在,需要裁剪的红色精灵。 最终结果。 现在,我知道在XNA中,您可以做两件事来做到这一点: 使用模板缓冲区。 使用像素着色器。 我试图做一个像素着色器,基本上就是这样做的: float4 main(float2 texCoord : TEXCOORD0) : COLOR0 { float4 tex = tex2D(BaseTexture, texCoord); float4 bitMask = tex2D(MaskTexture, texCoord); if (bitMask.a > 0) { return float4(tex.r, tex.g, tex.b, tex.a); } else { return float4(0, 0, 0, 0); } } 这似乎可以裁剪图像(尽管一旦图像开始移动就不正确),但是我的问题是图像一直在移动(它们不是静态的),因此这种裁剪必须是动态的。 有没有一种方法可以更改着色器代码以考虑其位置? 另外,我已经读过有关使用模板缓冲区的信息,但是大多数示例似乎都取决于使用rendertarget,我真的不想这么做。(我已经在其余的游戏中使用了3或4,并且在其上面再添加一个似乎过大了) 我发现唯一不使用Rendertargets的教程来自Shawn …