我在XNA中工作,我遇到了以下問題:我的目標是將多個不同紋理繪製到紋理,然後將最終紋理繪製到屏幕上給定的alpha值。渲染到紋理填充XNA中的顏色紋理
問題是,我繪製的紋理是全屏幕,並填充顏色而不是透明度,因此它會遮擋它後面的所有內容。
一切都是2D,這裏是我的代碼:
public void Draw(SpriteBatch sb)
{
if (opacity > 0)
{
gd.SetRenderTarget(formTexture);
gd.Clear(Color.Transparent);
for (int i=0; i<formItems.Count; i++)
{
((FormItem)formItems[i]).draw(sb);
}
sb.Begin(SpriteSortMode.Immediate, BlendState.Additive);
for (int i=0; i<formItems.Count; i++)
{
FormItem fi = (formItems[i] as FormItem);
if (fi.glow != null)
{
sb.Draw(fi.glow, new Rectangle((int) fi.location.X + fi.width/2 - fi.glow.Width/2, (int) fi.location.Y + fi.height/2 - fi.glow.Height/2, fi.glow.Width, fi.glow.Height), Color.White);
}
}
sb.End();
gd.SetRenderTarget(null);
sb.Begin();
sb.Draw(formTexture, new Rectangle(0, 0, gd.Viewport.Width, gd.Viewport.Height), Color.White*opacity);
sb.End();
}
}
formTexture是RenderTarget2D對象,GD是圖形設備。這是formTexture如何初始化:
formTexture = new RenderTarget2D(this.gd, this.windowWidth, this.windowHeight);
謝謝,這是一個僅限Windows的遊戲,我會試試這個。 –