现在的位置: 首页 > 综合 > 正文

List of Examples Converting XNA 3.1 to XNA 4.0

2011年10月03日 ⁄ 综合 ⁄ 共 8874字 ⁄ 字号 评论关闭

List of Examples Converting XNA 3.1 to XNA 4.0

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

抱歉!评论已关闭.