Windows Phone 7 XNA アプリケーションで RenderTarget2D を使用したいと考えています。ただし、描画をレンダー ターゲットに切り替えてから ( SetRenderTarget(null) を使用して) 元に戻すと、画面全体が青色で描画され、レンダー ターゲットに切り替える前に描画されたものはすべて上書きされるため、うまくいきません。これが予想される動作かどうかはわかりません。
実際、この動作を再現するのは非常に簡単です。Windows Phone 7 用の必要最小限の XNA ゲームを作成し、次のコードを使用するだけです。
protected override void Draw(GameTime gameTime)
{
spriteBatch.Begin();
spriteBatch.Draw(textureBackground, new Vector2(0,0), Color.White); // This is a 480x800 image and my resolution is set to 480x800
spriteBatch.End(); // Testing this block of code confirms that the textureBackground is being drawn
graphics.GraphicsDevice.SetRenderTarget(textureBuffer);
spriteBatch.Begin();
spriteBatch.Draw(textureSummer, new Vector2(0, 0), Color.White); // texture Summer is a 20x20 pixels texture while the screen resolution is 480 x 800
spriteBatch.End();
graphics.GraphicsDevice.SetRenderTarget(null); // switch back
spriteBatch.Begin();
spriteBatch.Draw(textureBuffer, new Vector2(0,0), Color.White);
spriteBatch.End(); // at this point, textureBuffer is drawn (the 20x20 pixeles image) in the upper left hand corner but the background of the whole screen is BLUE and so textureBackground texture has been overwritten by this color and is not showing anymore.
// At this point all I see is a blue background with a 20x20 pixels image in the upper left hand corner.
}
次のようにレンダー ターゲットを作成しています。
textureSummer = Content.Load<Texture2D>("summer_picture_icon"); // the 20x20 pixels texture
textureBuffer = new RenderTarget2D(graphics.GraphicsDevice, textureSummer.Width, textureSummer.Height); // the RenderTarget2D object. Note that this RenderTarget is only 20x20.
したがって、私は何を間違っていますか?
ありがとう。