XNA - GraphicsDevice初始化混淆

时间:2010-10-26 22:59:37

标签: c# initialization xna

众所周知,你应该在使用游戏对象的GraphicsDevice之前调用游戏的base.Initialize()吗?这就是我通过在线阅读大量教程而收集的内容。

显然,这不是游戏的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();
}

初始化GraphicDevice的 Game.Run()会发生什么魔力?

1 个答案:

答案 0 :(得分:2)

初始化为XNA documentation specifies“在创建Game和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程序集的内部代码。