Вы играете в игры? Уверен что да, иначе на gcup вам делать нечего. А знаете ли вы как рисуется ваш спрайт или фон когда вы его помещаете в Game Maker или Unity? Цель данной статьи: объяснить новичкам о том как рендерится 2D изображение.
Итак, что же мы привыкли считать за 2D? Когда вся графика на экране плоская, растровая или векторная. Это утверждение было верно лет 20 назад. Но давайте немного к истории:
Изначально, когда был MS-DOS и никакого API для рисовании графики не было всё рисовали прямо в фреймбуффер. Фреймбуффер - участок памяти, в котором располагаются пиксели. Этот участок обычно находится на видеокарте и отвечает за то что сейчас отображается на экране. То есть чтобы отобразить что то на экране достаточно скопировать скажем спрайт из одного участка памяти в другой. Но всё не так просто. Если просто взять и очищать фреймбуффер, затем рисовать спрайт каждый кадр то картинка будет мерцать, потому что картинка не подготавливается а сразу рисуется на экран, и это вызывает мерцание. Поэтому обычно выделяли массив размером Width * Height * кол-во компонентов цвета, куда всю эту графику рисовали, а затем этот массив копировали в фреймбуффер. Этот метод называется двойной буферизацией.
Когда рисуется спрайт на экран, он копируется из одного участка памяти в другой. Этот метод называется блиттинг.
Большинство игр того времени использовали блиттинг, но сейчас блиттинг почти нигде не используется.
Потому что теперь он не нужен, теперь 2D - это частный случай 3D. Теперь всё гораздо проще: рисуем плоскость, накладываем на неё текстуру и всё. Но ведь был же DirectDraw спросите вы. Был. Но 3D использовать просто удобнее. Например вы сможете рисовать 3D меши в 2D сцене. Вы сможете использовать всю мощь пиксельных шейдеров для создания различных эффектов. Вы сможете использовать частицы(при софтварном рендеринге, а ускорение 2D уже давно убрали из видеокарт много частиц с приемлемым FPS рендерить не получится).
Именно так сейчас и работает 2D графика в играх.
И каждый раз когда вы помещаете спрайт в Unity вы помещаете Plane. И на самом деле ваша игра - 3D.
Вот я и описал то как работает 2D графика в этой короткой статье. Большая часть это конечно история, но я думаю все поняли как она работает. |