【发布时间】:2012-04-13 07:20:35
【问题描述】:
我想要的只是清除我的 renderTarget2D 一次,以便它开始时完全透明,然后在帧之间保留它的内容。
我在绘制背景纹理之后绘制了 renderTarget 纹理,所以我不希望它被覆盖。但是 Clear(Color.Transparent) 它显示为不透明的紫色,据我所知,这是默认的透明颜色...
我做错了什么?我尝试在构造函数中更改 SurfaceFormat 参数,但没有效果。我做错了什么?
// instantiate renderTarget to preserve contents
renderTarget = new RenderTarget2D(GraphicsDevice,
GraphicsDevice.PresentationParameters.BackBufferWidth,
GraphicsDevice.PresentationParameters.BackBufferHeight,
false,
GraphicsDevice.PresentationParameters.BackBufferFormat,
DepthFormat.Depth24,
0,
RenderTargetUsage.PreserveContents);
// clear with transparent color
GraphicsDevice.SetRenderTarget(Globals.renderTarget);
GraphicsDevice.Clear(Color.Transparent);
GraphicsDevice.SetRenderTarget(null);
【问题讨论】:
-
愚蠢的问题,但
renderTarget和renderTarget1是错字吗? -
是的,这里转换代码时打错了!哎呀
-
如果您要做的第一件事就是清除它,为什么还要使用 RenderTargetUsage.PreserveContents? PreserveContents 是迄今为止最慢的 RenderTargetUsage。
-
GraphicsDevice.Clear(Color.Transparent);确实按照您的预期清除了 RenderTarget。但是,PreserveContents 仅在渲染目标更改时保留内容,例如 i GraphicsDevice.SetRenderTarget(null)。在所有 RenderTargetUsages 中,RenderTarget 保持不受影响,直到它产生。
-
附言。如果你想讨论渲染目标是如何工作的,我已经结束了 GameDev 聊天 chat.stackexchange.com/rooms/19/game-development
标签: c# xna draw rendertarget