2010-11-09 6 views
0

je la déclaration suivante:ResolveTexture2D - Le cauchemar XNA 4

ResolveTexture2D rightTex; 

Et je l'utilise dans la méthode Draw comme ceci:

GraphicsDevice.ResolveBackBuffer(rightTex); 

Maintenant, je dessine ensuite à l'aide du SpriteBatch:

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

Cela fonctionne fantastique dans XNA 3.1. Mais, maintenant je suis en train de convertir en XNA 4, ResolveTexture2D et la méthode ResolveBackBuffer ont été supprimés. Comment est-ce que je re-code cela pour travailler dans XNA 4.0?

EDIT

Donc, voici un peu plus de code pour aider peut-être. Ici, j'Initialise le 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); 

Ensuite, dans ma méthode Draw je:

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(); 

Répondre

3

ahhh, ici vous allez: Déplacer le GraphicsDevice.SetRenderTarget() avant l'appel

+0

Parfait! Juste pour régler un problème de transparence, mais génial: D –

6

La suppression de ResolveTexture2D de XNA 4.0 est explained here.

Fondamentalement, vous devriez utiliser des cibles de rendu. L'essentiel du processus est le suivant:

Créez une cible de rendu à utiliser. Puis

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

placèrent sur l'appareil:

graphicsDevice.SetRenderTarget(renderTarget); 

Alors votre scène render.

Alors non définir la cible de rendu:

graphicsDevice.SetRenderTarget(null); 

Enfin, vous pouvez utiliser un RenderTarget2D comme Texture2D, comme ceci:

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

Vous pouvez également trouver ce overview of RenderTarget changes in XNA 4.0 mérite d'être lu.

+0

le GraphicsDevice.Clear() Merci pour votre aide. –