2010-10-26 69 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組件自己的內部代碼。