XNA - GraphicsDevice Инициализация путаницы - PullRequest
2 голосов
/ 27 октября 2010

Итак, хорошо известно, что вы должны вызывать base.Initialize () игры, прежде чем использовать 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?

1 Ответ

2 голосов
/ 27 октября 2010

В документации XNA указано , что Initialize равно "Вызывается после создания Game и GraphicsDevice, но перед LoadContent." Учебники, в которых указано иное, неверны.

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...