2010-11-09 74 views
0

我有以下声明:ResolveTexture2D - 在XNA的噩梦4

ResolveTexture2D rightTex; 

我用它在Draw方法,像这样:

GraphicsDevice.ResolveBackBuffer(rightTex); 

现在,我再画出来使用SpriteBatch

spriteBatch.Draw(rightTex, new Rectangle(0, 0, 800, 600), Color.Cyan); 

这在XNA 3.1中的工作很棒。但是,现在我转换为XNA 4,ResolveTexture2DResolveBackBuffer方法已被删除。我将如何重新编码以便在XNA 4.0中工作?

编辑

所以,这里是一些代码,也许帮助。在这里,我初始化RenderTargets:

PresentationParameters pp = GraphicsDevice.PresentationParameters; 
leftTex = new RenderTarget2D(GraphicsDevice, pp.BackBufferWidth, pp.BackBufferHeight, true, pp.BackBufferFormat, pp.DepthStencilFormat); 
rightTex = new RenderTarget2D(GraphicsDevice, pp.BackBufferWidth, pp.BackBufferHeight, true, pp.BackBufferFormat, pp.DepthStencilFormat); 

然后,在我Draw方法,我做的:

GraphicsDevice.Clear(Color.Gray); 
rightCam.render(model, Matrix.CreateScale(0.1f), modelAbsTrans); 
GraphicsDevice.SetRenderTarget(rightTex); 
GraphicsDevice.SetRenderTarget(null); 

GraphicsDevice.Clear(Color.Gray); 
leftCam.render(model, Matrix.CreateScale(0.1f), modelAbsTrans); 
GraphicsDevice.SetRenderTarget(leftTex); 
GraphicsDevice.SetRenderTarget(null); 

GraphicsDevice.Clear(Color.Black); 

//start the SpriteBatch with Additive Blend Mode 
spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.Additive); 
    spriteBatch.Draw(rightTex, new Rectangle(0, 0, 800, 600), Color.Cyan); 
    spriteBatch.Draw(leftTex, new Rectangle(0, 0, 800, 600), Color.Red); 
spriteBatch.End(); 

回答

3

啊啊啊,在这里你去: 移动GraphicsDevice.SetRenderTarget()的GraphicsDevice.Clear()调用之前

+0

完美!刚刚解决了一个透明度问题,但很好:D – 2010-11-09 16:31:51

6

ResolveTexture2D从XNA 4.0去除explained here

基本上你应该使用渲染目标。过程的要点如下:

创建要使用的渲染目标。

RenderTarget2D renderTarget = new RenderTarget2D(graphicsDevice, width, height); 

然后将其设置到设备:

graphicsDevice.SetRenderTarget(renderTarget); 

然后渲染场景。

然后取消设置渲染目标:

graphicsDevice.SetRenderTarget(null); 

最后,你可以使用一个RenderTarget2D作为一个Texture2D,像这样:

spriteBatch.Draw(renderTarget, new Rectangle(0, 0, 800, 600), Color.Cyan); 

您也可以找到这个overview of RenderTarget changes in XNA 4.0值得一读。

+0

感谢您帮助。 – 2010-11-09 16:31:06