2010-10-26 60 views
2

因此众所周知,在使用游戏对象的GraphicsDevice之前,您应该调用游戏的base.Initialize()?这就是我通过在线阅读大量教程而得到的结果。XNA - GraphicsDevice初始化混淆

显然,这不是创建游戏的GraphicDevice那里,因为我能够base.Initalize()这样的前使用它...

protected override void Initialize() 
{ 
    // TODO: Add your initialization logic here 

    // I use the game's GraphicsDevice in here to create a 
    // SpriteBatch, BasicEffect, ect. and it's VALID 
    Engine.Initialize(); 

    base.Initialize(); 
} 

什么魔法Game.Run()是发生在那会初始化GraphicDevice?

回答

2

XNA documentation specifies初始化为“创建游戏和GraphicsDevice后调用,但在LoadContent之前调用”。另外声明的教程不正确。

Game.Run创建一个图形设备,然后调用Initialize。

this.graphicsDeviceManager = this.Services.GetService(typeof(IGraphicsDeviceManager)) as IGraphicsDeviceManager; 
if (this.graphicsDeviceManager != null) 
{ 
    this.graphicsDeviceManager.CreateDevice(); 
} 
this.Initialize(); 

您可以使用Reflector调查XNA组件自己的内部代码。