2011-01-05 5 views
0

In XNA 4.0 was ist der richtige Weg, um einen "Second-Pass" -Shader einzurichten, wo ich einen Frame, der gerendert wurde, nehmen und dann den gesamten gerenderten Bildschirm durch ein Shader-Programm laufen lassen?Was ist der richtige Weg, um einen zweiten Durchlauf-Shader in XNA auszuführen?

Kann ich auch einen dritten Durchgang durchführen?

+0

Sprechen Sie über einen zweiten Durchlauf im Shader selbst? –

+0

Hier ist ein verwandter Artikel, den Sie und Leser Ihrer Frage interessant finden könnten: http://blogs.msdn.com/b/shawnhar/archive/2009/08/17/combining-shaders.aspx –

Antwort

1

Ja, es ist möglich. Sie müssen die Szene auf einem RenderTarget2D rendern und dann die Textur auf dem Gerät mit Ihrem Pixelshader rendern.

RenderTarget2D target; // needs to instanciate in LoadContent(); 
Effect myEffect; // this one too. 
Draw(GameTime gametime) 
{ 
    GraphicsDevice.SetRenderTarget(target); 
    RenderScene(); 
    GraphicsDevice.SetRenderTarget(null); 

    spriteBatch.Begin(); 
    myEffect.CurrentTechnique.Passes[0].Apply(); 

    spriteBatch.Draw(.... , target, ...); 
    spriteBatch.End(); 
} 
Verwandte Themen