netlib.narod.ru | < Назад | Оглавление | Далее > |
Последняя техника двухмерной графики, которую я собираюсь показать вам, обычно называется работа с большими растрами (big bitmap engine). Используемая в популярных играх, таких как Baldur's Gate, техника работы с большими растрами позволяет по-новому взглянуть на сферу применения двухмерной графики. В названии все сказано — большие растры. Техника использует в качестве уровней огромные растровые изображения, а значит визуальное качество карты значительно улучшается по сравнению с использованием маленьких блоков.
Из-за особенностей памяти текстур используемые для хранения уровней растры делятся на несколько файлов с изображениями. Например, размер уровня может быть 1024 × 1024 пикселя. Поскольку вас ограничивают предельные размеры текстур в Direct3D, вы должны разделить этот уровень на 16 текстур, размером 256 × 256 пикселей (упорядоченных в сетку 4 × 4). Фактически вы разделяете уровень на 16 блоков.
Поскольку для визуализации уровня вы используете блоки, перед вами открываются некоторые замечательные возможности. Например, вы можете экономить память, повторно используя блоки уровня. Возьмем, к примеру, траву; это общее изображение, которое может применяться несколько раз, и на большой картине трава будет прекрасно гармонировать с остальным изображением.
Вы можете не только повторно использовать блоки, но и масштабировать их для создания еще больших уровней. Например, увеличив масштаб блоков в два раза вы в четыре раза увеличите размер уровня. А как насчет увеличения уровня в восемь или шестнадцать раз? Это все возможно, и используя несколько слоев блоков вы можете конструировать исключительно большие (и прекрасные) уровни.
При работе с большими растрами возникает одна проблема — как разделить их на несколько текстур? Пердположим, что размер вашего уровня 1024 × 1024 пикселя; это значит, что надо разделить уровень на 16 текстур, каждая размером 256 × 256 пикселей. Поскольку Direct3D не может сделать это, придется воспользоваться помощью другой программы.
После того, как вы сохраните фрагменты большого растрового изображения в различных файлах, наступит время загрузить их. Для загрузки этих растровых изображений с диска и рисования их на экране вы можете использовать чрезвычайно полезный объект класса cTiles, разработанный ранее в этой главе в разделе «Построение класса для работы с блоками». Верно — не требуется никакого программирования; все уже сделано!
Поскольку теперь вы можете загрузить блоки вашего большого растра и можете использовать разработанный ранее класс cMap для хранения информации о карте, перейдем к рисованию каких-нибудь больших растров уровней.
Теперь, когда у вас есть набор больших блоков и набор небольших блоков, пришло время выступить во всем блеске. Фактически, механизм работы с большими растрами, который я описал и разработал для этой книги почти не отличается от механизма работы с блочной графикой, который я показал в этой главе раньше (см. раздел «Основы использования блочной графики»). Поэтому не надо поворачивать колесо вспять и снова показывать тот же самый код. Вместо этого взгляните на демонстрационную программу работы с большими растрами, находящуюся на CD-ROM. Единственное различие, которое вы заметите, заключается в том, что некоторые слои используют большие блоки.
netlib.narod.ru | < Назад | Оглавление | Далее > |