SpriteBlendMode, SaveStateMode
1
2
|
// XNA 3.1 sprite.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Deferred, SaveStateMode.SaveState); |
1
2
|
// XNA 4.0 sprite.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend); |
1
2
3
|
// XNA 3.1 // Sort the object layer and player sprite according to depth spriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.BackToFront, SaveStateMode.None); |
1
2
3
|
// XNA 4.0 // Sort the object layer and player sprite according to depth spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend); |
1
2
|
// XNA 3.1 sprite.Begin(SpriteBlendMode.None, SpriteSortMode.Immediate, SaveStateMode.SaveState); |
1
2
|
// XNA 4.0 sprite.Begin(SpriteSortMode.Immediate, BlendState.Opaque); |
1
2
3
4
5
6
|
// XNA 3.1 // Draw the background image. spriteBatch.Begin(SpriteBlendMode.None); Viewport viewport = GraphicsDevice.Viewport; spriteBatch.Draw(background, new Rectangle(0, 0, viewport.Width, viewport.Height), Color.White); spriteBatch.End(); |
1
2
3
4
5
|
// XNA 4.0 // Draw the background image. spriteBatch.Begin(0, BlendState.Opaque); spriteBatch.Draw(background, GraphicsDevice.Viewport.Bounds, Color.White); spriteBatch.End(); |
RenderState
1
2
3
4
5
6
7
8
9
10
|
// XNA 3.1 // enable alpha blending and disable depth write GraphicsDevice.RenderState.AlphaBlendEnable = true ; GraphicsDevice.RenderState.SourceBlend = Blend.SourceAlpha; GraphicsDevice.RenderState.DestinationBlend = Blend.InverseSourceAlpha; GraphicsDevice.RenderState.SeparateAlphaBlendEnabled = true ; GraphicsDevice.RenderState.AlphaBlendOperation = BlendFunction.Add; GraphicsDevice.RenderState.AlphaSourceBlend = Blend.One; GraphicsDevice.RenderState.AlphaDestinationBlend = Blend.One; GraphicsDevice.RenderState.DepthBufferWriteEnable = false ; |
1
2
3
4
|
// XNA 4.0 // enable alpha blending and disable depth write GraphicsDevice.BlendState = BlendState.AlphaBlend; GraphicsDevice.DepthStencilState = DepthStencilState.DepthRead; |
1
2
3
4
5
|
// XNA 3.1 // reset blend and depth write GraphicsDevice.RenderState.AlphaBlendEnable = false ; GraphicsDevice.RenderState.SeparateAlphaBlendEnabled = false ; GraphicsDevice.RenderState.DepthBufferWriteEnable = true ; |
1
2
3
4
|
// XNA 4.0 // reset blend and depth write GraphicsDevice.BlendState = BlendState.Additive; GraphicsDevice.DepthStencilState = DepthStencilState.Default; |
1
2
3
|
// XNA 3.1 // enable depth buffering GraphicsDevice.RenderState.DepthBufferEnable = true ; |
1
2
3
|
// XNA 4.0 // enable depth buffering GraphicsDevice.DepthStencilState = DepthStencilState.Default; |
1
2
3
4
|
// XNA 3.1 //disable depth buffering GraphicsDevice.RenderState.DepthBufferWriteEnable = false ; GraphicsDevice.RenderState.DepthBufferEnable = false ; |
1
2
3
|
// XNA 4.0 //disable depth buffering GraphicsDevice.DepthStencilState = DepthStencilState.None; |
1
2
3
4
5
6
|
// XNA 3.1 // set additive blend (zero on alpha) GraphicsDevice.RenderState.DepthBufferWriteEnable = false ; GraphicsDevice.RenderState.AlphaBlendEnable = true ; GraphicsDevice.RenderState.SourceBlend = Blend.One; GraphicsDevice.RenderState.DestinationBlend = Blend.One; |
1
2
3
4
|
// XNA 4.0 // set additive blend (zero on alpha) GraphicsDevice.DepthStencilState = DepthStencilState.DepthRead; GraphicsDevice.BlendState = BlendState.AlphaBlend; |
1
2
3
4
5
|
// XNA 3.1 // restore blend modes GraphicsDevice.RenderState.DepthBufferWriteEnable = true ; GraphicsDevice.RenderState.AlphaBlendEnable = false ; GraphicsDevice.RenderState.SeparateAlphaBlendEnabled = false ; |
1
2
3
4
|
// XNA 4.0 // restore blend modes GraphicsDevice.BlendState = BlendState.Opaque; GraphicsDevice.DepthStencilState = DepthStencilState.Default; |
1
2
3
4
5
6
7
|
// XNA 3.1 // set alpha blend and no depth test or write GraphicsDevice.RenderState.DepthBufferEnable = false ; GraphicsDevice.RenderState.DepthBufferWriteEnable = false ; GraphicsDevice.RenderState.AlphaBlendEnable = true ; GraphicsDevice.RenderState.SourceBlend = Blend.SourceAlpha; GraphicsDevice.RenderState.DestinationBlend = Blend.InverseSourceAlpha; |
1
2
3
4
|
// XNA 4.0 // set alpha blend and no depth test or write GraphicsDevice.DepthStencilState = DepthStencilState.None; GraphicsDevice.BlendState = BlendState.AlphaBlend; |
1
2
3
4
5
|
// XNA 3.1 // Set suitable renderstates for drawing a 3D model GraphicsDevice.RenderState.AlphaBlendEnable = false ; GraphicsDevice.RenderState.AlphaTestEnable = false ; GraphicsDevice.RenderState.DepthBufferEnable = true ; |
1
2
3
4
|
// XNA 4.0 // Set suitable renderstates for drawing a 3D model GraphicsDevice.BlendState = BlendState.Opaque; GraphicsDevice.DepthStencilState = DepthStencilState.Default; |
1
2
3
4
5
|
// XNA 3.1 // additive blend GraphicsDevice.RenderState.AlphaBlendEnable = true ; GraphicsDevice.RenderState.SourceBlend = Blend.One; GraphicsDevice.RenderState.DestinationBlend = Blend.One; |
1
2
3
|
// XNA 4.0 // additive blend GraphicsDevice.BlendState = BlendState.Additive; |
1
2
3
|
// XNA 3.1 // set additive blend GraphicsDevice.RenderState.DestinationBlend = Blend.One; |
1
2
3
|
// XNA 4.0 // set additive blend GraphicsDevice.BlendState = BlendState.Additive; |
1
2
3
|
// XNA 3.1 // set alpha blend GraphicsDevice.RenderState.DestinationBlend = Blend.InverseSourceAlpha; |
1
2
3
|
// XNA 4.0 // set alpha blend GraphicsDevice.BlendState = BlendState.AlphaBlend; |
1
2
|
// XNA 3.1 GraphicsDevice.RenderState.CullMode = CullMode.CullCounterClockwiseFace; |
1
2
|
// XNA 4.0 GraphicsDevice.RasterizerState = RasterizerState.CullCounterClockwise; |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
// XNA 3.1 // set render states GraphicsDevice.RenderState.DepthBufferEnable = false ; GraphicsDevice.RenderState.DepthBufferWriteEnable = false ; GraphicsDevice.RenderState.AlphaBlendEnable = true ; GraphicsDevice.RenderState.SourceBlend = Blend.One; GraphicsDevice.RenderState.DestinationBlend = Blend.One; GraphicsDevice.RenderState.SeparateAlphaBlendEnabled = true ; GraphicsDevice.RenderState.AlphaBlendOperation = BlendFunction.Add; GraphicsDevice.RenderState.AlphaDestinationBlend = Blend.Zero; GraphicsDevice.RenderState.AlphaSourceBlend = Blend.Zero; // drawing code here.. // restore render states GraphicsDevice.RenderState.DepthBufferEnable = true ; GraphicsDevice.RenderState.DepthBufferWriteEnable = true ; GraphicsDevice.RenderState.AlphaBlendEnable = false ; GraphicsDevice.RenderState.SeparateAlphaBlendEnabled = false ; |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
// XNA 4.0 //save the states DepthStencilState ds = GraphicsDevice.DepthStencilState; BlendState bs = GraphicsDevice.BlendState; //set render states GraphicsDevice.DepthStencilState = DepthStencilState.DepthRead; GraphicsDevice.BlendState = BlendState.AlphaBlend; // drawing code here.. // restore render states GraphicsDevice.DepthStencilState = ds; GraphicsDevice.BlendState = bs; |
Effect and EffectPass, Begin(), End(), CommitChanges(), Clone()
1
2
3
4
5
6
7
|
// apply effect XNA 3.1 blurEffect.CommitChanges(); blurEffect.Begin(SaveStateMode.SaveState); blurEffect.CurrentTechnique.Passes[0].Begin(); GraphicsDevice.DrawPrimitives(PrimitiveType.TriangleList, 0, 2); blurEffect.CurrentTechnique.Passes[0].End(); blurEffect.End(); |
1
2
3
|
// apply effect XNA 4.0 blurEffect.CurrentTechnique.Passes[0].Apply(); GraphicsDevice.DrawPrimitives(PrimitiveType.TriangleList, 0, 2); |
1
2
3
|
// XNA 3.1 // commit effect changes effect.CommitChanges(); |
1
2
3
|
// XNA 4.0 // you will need to call EffectPass.Apply() if any of the effect properties change // Otherwise Delete it. |
1
2
3
4
|
// XNA 3.1 // begin effect effect.Begin(SaveStateMode.SaveState); effect.CurrentTechnique.Passes[0].Begin(); |
1
2
3
|
// XNA 4.0 // begin effect effect.CurrentTechnique.Passes[0].Apply(); |
1
2
3
4
|
// XNA 3.1 // end effect effect.CurrentTechnique.Passes[0].End(); effect.End(); |
1
2
|
// XNA 4.0 // Delete it. No longer needed. |
1
2
3
|
// XNA 3.1 // Make a clone of our replacement effect Effect newEffect = replacementEffect.Clone(replacementEffect.GraphicsDevice); |
1
2
3
|
// XNA 4.0 // Make a clone of our replacement effect. 3.1 Effect newEffect = replacementEffect.Clone(); |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
// XNA 3.1 // Activate the appropriate effect technique postprocessEffect.CurrentTechnique = postprocessEffect.Techniques[effectTechniqueName]; // Draw a fullscreen sprite to apply the postprocessing effect. spriteBatch.Begin(SpriteBlendMode.None,SpriteSortMode.Immediate, SaveStateMode.None); postprocessEffect.Begin(); postprocessEffect.CurrentTechnique.Passes[0].Begin(); spriteBatch.Draw(sceneRenderTarget.GetTexture(), Vector2.Zero, Color.White); spriteBatch.End(); postprocessEffect.CurrentTechnique.Passes[0].End(); postprocessEffect.End(); |
1
2
3
4
5
6
7
8
|
// XNA 4.0 // Activate the appropriate effect technique postprocessEffect.CurrentTechnique = postprocessEffect.Techniques[effectTechniqueName]; // Draw a fullscreen sprite to apply the postprocessing effect. spriteBatch.Begin(0, BlendState.Opaque, null , null , null , postprocessEffect); spriteBatch.Draw(sceneRenderTarget, Vector2.Zero, Color.White); spriteBatch.End(); |
ShaderProfile, TotalRealTime, TransparentBlack
1
2
3
|
// XNA 3.1 graphics.MinimumPixelShaderProfile = ShaderProfile.PS_3_0; //any PS number... graphics.MinimumVertexShaderProfile = ShaderProfile.VS_3_0; //any VS number... |
1
2
|
// XNA 4.0 // Delete it. No longer needed. |
1
2
|
// XNA 3.1 float myTime = ( float )gameTime.TotalRealTime.TotalSeconds * 0.2f; |
1
2
|
// XNA 4.0 float myTime = ( float )gameTime.TotalGameTime.TotalSeconds * 0.2f; |
1
2
|
// XNA 3.1 GraphicsDevice.Clear(Color.TransparentBlack); |
1
2
|
// XNA 4.0 GraphicsDevice.Clear(Color.Transparent); |
ResolveTexture2D, ResolveBackBuffer, RenderTarget2D, GetTexture, DepthStencilBuffer, PresentationParameters, MultiSampleType, MultiSampleQuality, SetRenderTarget
1
2
|
// XNA 3.1 ResolveTexture2D sceneMap; |
1
2
|
// XNA 4.0 RenderTarget2D sceneMap; |
1
2
3
4
5
6
|
// XNA 3.1 // Look up the resolution and format of our main backbuffer. PresentationParameters pp = GraphicsDevice
|