Предыдущая Следующая
protected override void Initialize() {
GraphicsAdapter adapter =
270 Смена игровых состояний
Улучшаем смену игровых состояний 271
graphics.GraphicsDevice.CreationParameters.Adapter;
graphics.PreferredBackBufferWidth = adapter.CurrentDisplayMode.Width; graphics.PreferredBackBufferHeight = adapter.CurrentDisplayMode.Height; graphics.IsFullScreen = true; graphics.ApplyChanges();
screenWidth = graphics.PreferredBackBufferWidth; screenHeight = graphics.PreferredBackBufferHeight; base.Initialize();
}
Работа предложенного блока кода, а в частности, применение класса GraphicsAdapter на начальном этапе инициализации игры, возможна только в методе Initialize(). Если вы попробуете использовать этот класс в конструкторе класса Gamel, то компилятор моментально выдаст вам ошибку компиляции. Настраивать разрешение экрана (автоподбор или ручной подбор разрешения классом GraphicsAdapter) можно только от метода Initialize() или с помощью других методов сторонних классов, которые все равно должны выполняться лишь после окончания работы конструктора класса Gamel .
Для того чтобы использовать определенное разрешение экрана, нам необходимо сначала получить эти искомые параметры. Для этих и других целей в XNA существует класс GraphicsAdapter, представляющий на программном уровне графический видеоадаптер компьютерной системы.
В первой строке кода метода Initialize() создается объект adapter класса GraphicsAdapter, который получает все технические параметры видеоадаптера, в том числе и разрешение экрана.
GraphicsAdapter adapter =
graphics.GraphicsDevice.CreationParameters.Adapter;
Имея этот объект, мы можем использовать его для установки ширины и высоты рабочей поверхности экрана монитора следующим образом.
graphics.PreferredBackBufferWidth = adapter.CurrentDisplayMode.Width; graphics.PreferredBackBufferHeight = adapter.CurrentDisplayMode.Height;
В этих строках кода мы получаем у видеоадаптера компьютерной системы текущую ширину и высоту экрана и используем эти значения в программе. Таким образом, на любой компьютерной системе ширина и высота экрана будут установлены в соответствии с текущими пользовательскими настройками.
Затем в исходном коде метода Initialize() происходят установка полноэкранного режима отображения информации на дисплее, получение графического состояния, а две новые переменные screenWidth и screenHeight инициализируются значениями ширины и высоты дисплея. Две эти новые переменные впоследствии нам понадобятся для работы с матрицами. Запустите проект Screen и проверьте работу предложенного механизма на практике. Предыдущая Следующая
|