Xna 使用RenderToSurface绘制时出现透明度问题

Xna 使用RenderToSurface绘制时出现透明度问题,xna,directx,render-to-texture,managed-directx,Xna,Directx,Render To Texture,Managed Directx,在使用RenderToSurface绘制半透明对象时,我遇到了一个问题(当我直接在设备上绘制对象时,它正在运行文件)。问题是当我在RenderToSurface上绘制Alpha值为50%的对象时,当我在设备上绘制曲面时,对象的透明度无效。我的代码如下 [代码]RenderingSurface.BeginScene(RenderTexture.GetSurfaceLevel(0),视图) 渲染曲面具有相同的形状,具有50%的透明度 绘制曲面的代码 _device.BeginScene();

在使用RenderToSurface绘制半透明对象时,我遇到了一个问题(当我直接在设备上绘制对象时,它正在运行文件)。问题是当我在RenderToSurface上绘制Alpha值为50%的对象时,当我在设备上绘制曲面时,对象的透明度无效。我的代码如下

[代码]RenderingSurface.BeginScene(RenderTexture.GetSurfaceLevel(0),视图)

渲染曲面具有相同的形状,具有50%的透明度

绘制曲面的代码

_device.BeginScene();
        _device.Clear(ClearFlags.Target | ClearFlags.ZBuffer | ClearFlags.Stencil, BackgroundColor, 1, 0);

  using (Sprite s = new Sprite(_device))
    {
        s.Begin(SpriteFlags.DoNotSaveState);
        s.Draw(RenderTexture, new Microsoft.DirectX.Vector3(0, 0, 0), new Microsoft.DirectX.Vector3(0, 1, 0), Color.White.ToArgb());
        s.End();
    }

确保使用具有alpha通道(A8R8G8B8而不是X8R8G8B8)的像素格式创建渲染目标


此外,在渲染目标中渲染时,请确保使用alpha通道的“右混合模式”(right blend mode)渲染状态将生成的alpha写入曲面。请注意,alpha(
AlphaDestinationBlend
AlphaSourceBlend
,…)和颜色(
DestinationBlend
SourceBlend
,…)的混合模式不同;确保两者都已设置。

您所说的“对象的透明度无效”是什么意思?对象的透明度无效表示它进一步降低,在RenderToSurface上绘制后,它比实际的透明度更高。
_device.BeginScene();
        _device.Clear(ClearFlags.Target | ClearFlags.ZBuffer | ClearFlags.Stencil, BackgroundColor, 1, 0);

  using (Sprite s = new Sprite(_device))
    {
        s.Begin(SpriteFlags.DoNotSaveState);
        s.Draw(RenderTexture, new Microsoft.DirectX.Vector3(0, 0, 0), new Microsoft.DirectX.Vector3(0, 1, 0), Color.White.ToArgb());
        s.End();
    }