Поверхность приложения

Материал из Вики по GameMaker
Перейти к: навигация, поиск
style="padding: 5em;"GM style="padding: 5em;"GM Studio style="padding: 5em;"GM Studio 2

Старые версии GameMaker рисовали всю графику прямо на экране. GameMaker: Studio основную часть графики рисует на специальной поверхности — поверхности приложения. От обычных поверхностей она отличается только тем, что её нельзя удалить: она всегда существует, хотя её индекс может и изменяться.

Поверхность приложения содержит полностью нарисованный игровой кадр без GUI. Перед выводом на экран её можно обрабатывать, например, накладывать спецэффекты: размытие, свечение, эффект горячего воздуха, чёрно-белый фильтр. Для этого используйте переменную application_surface.

[править] Порядок событий

Поверхность создаётся в каждой комнате при первом срабатывании события рисования. До этого момента на поверхности ничего не будет нарисовано. Однако если вы, например, в событии создания запросите положение поверхности или попытаетесь изменить её размер, то результат будет правильным и никаких ошибок не возникнет. Последовательность событий следующая:

Событие предварительного рисования.
Движок создаёт поверхность приложения и делает её целью рисования
Для каждого вида (или один раз, если нет активных видов):
Событие начала рисования.
Событие рисования.
Событие окончания рисования.
Движок сбрасывает цель рисования.
Событие пост-рисования.
Движок копирует поверхность приложения в предварительный буфер:
Событие начала рисования GUI.
Событие рисования GUI.
Событие окончания рисования GUI.

[править] Масштабирование

По умолчанию размер поверхности приложения совпадает с размером дисплея. Движок рисует игровой кадр, растягивая его до размера поверхности, и выводит поверхность на экран, сжимая её до размера окна. В большинстве случаев растягивание и сжатие кадра незаметны, но в пиксель-арте появляются дефекты, а на сетчатых текстурах возникает муар. Чтобы выводить графику с попиксельной точностью, уменьшите размер поверхности приложения до размера вида при помощи функции surface_resize.

[править] Функции

application_surface_enable
application_surface_is_enabled
application_get_position
application_surface_draw_enable
Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты