C# xna 4.0如何使前景纹理透明以显示背景纹理

C# xna 4.0如何使前景纹理透明以显示背景纹理,c#,xna,transparency,xna-4.0,C#,Xna,Transparency,Xna 4.0,我希望这是一个简单的问题和答案,但是xna和微软似乎不必要地把事情复杂化了 我有一个覆盖整个屏幕的背景纹理。然后我有一个前景纹理,我想在背景纹理的顶部绘制它。正如您所期望的,前景纹理具有透明区域。我遇到的问题是,无论前景纹理是透明的,我都会看到图形设备的蓝色,而不是背景图像 我已经找到了进一步的信息。我正在调整前景纹理的大小,似乎调整大小是造成悲伤的原因 非常感谢您的任何建议或指点 Draw(...) { ScreenManager.Game.GraphicsDevice.Clear(Color

我希望这是一个简单的问题和答案,但是xna和微软似乎不必要地把事情复杂化了

我有一个覆盖整个屏幕的背景纹理。然后我有一个前景纹理,我想在背景纹理的顶部绘制它。正如您所期望的,前景纹理具有透明区域。我遇到的问题是,无论前景纹理是透明的,我都会看到图形设备的蓝色,而不是背景图像

我已经找到了进一步的信息。我正在调整前景纹理的大小,似乎调整大小是造成悲伤的原因

非常感谢您的任何建议或指点

Draw(...)
{
ScreenManager.Game.GraphicsDevice.Clear(Color.DarkBlue);
SpriteBatch spriteBatch = this.ScreenManager.SpriteBatch;
spriteBatch.Begin();

// draw the background
spriteBatch.Draw(_backgroundTexture, _backgroundPosition, null, Color.White, 0f,
                 Vector2.Zero, 1.0f, SpriteEffects.None, 0f);
spriteBatch.Draw(Resize(_foregroundTexture,100,100), _foregroundPosition, null, Color.White, 0f,
                 Vector2.Zero, 1.0f, SpriteEffects.None, 0f);

spriteBatch.End();
}

Texture2D Resize(texture2D, float newWidth, float newHeight)
{
RenderTarget2D renderTarget;
Rectangle destinationRectangle;
SpriteBatch spriteBatch;

renderTarget = new RenderTarget2D(graphicsDevice, (int)newWidth, (int)newHeight);
destinationRectangle = new Rectangle(0, 0, (int)newWidth, (int)newHeight);
spriteBatch = new SpriteBatch(graphicsDevice);

graphicsDevice.SetRenderTarget(renderTarget);

spriteBatch.Begin();
spriteBatch.Draw(texture2D, destinationRectangle, Color.White);
spriteBatch.End();

graphicsDevice.SetRenderTarget(null);

return renderTarget;
}

调整大小时,需要指定以下精灵批处理参数

spriteBatch.Begin(SpriteSortMode.Deferred,BlendState.不透明)