2010-10-26 2 views
2

Итак, хорошо известно, что вы должны использовать base.Initialize() перед тем, как использовать GraphicsDevice игрового объекта? Вот что я собрал, читая много учебников в Интернете.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, который инициализируется «Вызывается после игры и графика, но создаются, но до LoadContent». Уроки, в которых указано иное, неверны.

Game.Run создает графическое устройство, а затем вызывает Initialize.

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

Вы можете использовать Reflector исследовать внутренний код из XNA сборок самостоятельно.