netlib.narod.ru | < Назад | Оглавление | Далее > |
Сердцем упомянутых во вступлении к главе двухмерных игр является техника рисования, известная как блочная графика (tiling). В ней вы для конструирования большой сцены используете маленькие прямоугольные группы пикселов (эти небольшие растры называются блоками — tiles). Порядок размещения, определяющий как рисуются блоки, называется картой (map). Все это показано на рис. 7.1.
Рис. 7.1. В рисовании больших двухмерных сцен блоки и карты идут рука об руку. Вы используете изображенные слева блоки для визуализации карты справа
На рис. 7.1 слева находятся четыре небольших пронумерованных изображения — это блоки. В середине вы видите таблицу с числами. Эта таблица задает порядок, в котором рисуются блоки (в стиле «раскрась по номерам цветов»). Для каждого элемента таблицы вы рисуете соответствующий блок, который представлен числом и продолжаете это, пока не нарисуете всю сцену. Таблица называется картой. После завершения обработки таблицы получается изображение, показанное справа.
Польза от использования блоков и карт ясна — они требуют очень мало памяти для хранения. Используя для карты формат «раскрась по номерам» вы сможете конструировать огромные (именно огромные) сцены, тратя на них очень мало памяти.
Предположим, к примеру, что используются блоки размером 16 × 16 пикселов. Предположим, что вы используете 8-разрядный цвет, тогда для набора из 256 блоков потребуется 65 536 байт памяти. Кроме того, у вас есть карта, представляющая собой массив байтов (каждый байт представляет номер рисуемого блока) размером 1024 × 1024 (1 048 576 байт). Итак, всего для хранения карты и блоков вам требуется 1 114 112 байт.
Поскольку размер каждого блока равен 16 пикселям, а размер карты — 1024 блока, в результате визуализации получается изображение размером 16 384 × 16 384 пиксела, для хранения которого требуется 268 435 456 байт. Вы видите как экономится память вместо почти 300 Мбайт чуть больше 1 Мбайт.
netlib.narod.ru | < Назад | Оглавление | Далее > |