Прикладная графика 1992 г.

Введение - три метода графического представления информации. Три подхода к воспроизведению графики. Три основные проблемы.


1. ВВЕДЕНИЕ

Уважаемый читатель! Вы держите в руках книгу, посвяшенную
графике компьютера "ZX-Spectrum". Вероятно. Вы уже поняли, что
это второй (и не последний) том нашей графической серии. Если
Вам не довелось до сих пор приобрести т. 1 "Элементарная графи-
ка". это не должно Вас останавливать и не должно явиться су-
щественным препятствием для успешной работы с "Прикладной гра-
фикой". Мы готовим наши книги как достаточно автономные изда-
ния. каждое из которых представляет самостоятельную ценность и
может быть использовано для самообразования независимо от ос-
тальных.

В то же время, позвольте несколько слов уделить основный
положениям, рассмотренным в предыдущей томе и основным полу-
ченным там выводам.

1. 1. Три метода графического представления информации.

Если № взглянете на свою обширную игротеку "Синклеров-
ских" программ, то. возможно, очень удивитесь, когда узнаете,
что все многообразие графических экранов, с которым Вы можете
столкнуться, укладывается в простейшую схему, включающую в себя
всего лишь три метода исполнения графики:

- растровая графика;

- векторная графика;

- блочная графика.

Растровая графика характерна тем. что изображение на экра-
не строится по точкам в соответствии с теми образами, которые
заранее был созданы вами и хранятся где-то в оперативной памя-
ти. Эти образы часто называют шаблонами. Подготовить заранее
такие образы и отгрузить их на ленту Вы можете с помошью како-
го- либо графического редактора. Шаблоны размером 6X6 Вы можете
подготовить и используя приведенную в приложении 1 программу
'Генератор символов" ("Chareen"). Для подготовки шаблонов раз-
мером шХп (а их часто называют "спрайтами") используют про-
граммы типа "Генератор спрайтов" (см. приложение 2). Это же
можно сделать и используя режим "Capture" широко известного
графического редактора ARTSTUDIO. о чем мы расскажем в разде-
ле 2. 5. 2.

С растровой графикой Вы наиболее широко сталкиваетесь в
игровых программах аркадного и аркадно-адвенторного жанра, их
легко узнать - это красочные программы типа AEHI HOVES DIZZY.
scepetre of bagdad. Количество экранов в этих программах, как
правило, невелико - 15... 30. программисты увеличивают количес-
тво хранимых экранов за счет специальных приемов - уменьшения
размеров экранного изображения до |/з экрана (frafflcy goes то
hollywood) и за счет сокрааения цветовой гаммы (khight lore.
ALIEH-8). Тогда им удается увеличить количество экранов до мно-
гих десятков, а если некоторые "шаблоны" удается не хранить в
памяти, а создавать программным путем непосредственно перед
использованием с помощью специального "генератора", то и до
нескольких сотен. Так. например, в программах очень часто
генерируют всевозможные орнаментальные украшения (duh darach.
harspost. head over heels).

Векторная графика выглядит намного беднее и бледнее. Это
вычисляемая графика. В памяти не хранятся готовые образы тех
иди иных объектов, вместо этого там хранятся алгоритмы, с по-
мощью которых эти объекта строятся на экране непосредственно в
тот момент, когда они нужны. С такими программами вы также
должны быть знакомы. Это широко известная программа ELITE и
похожие на нее STAKGLIDER. ACADEMY и мн др.

несмотря на то. что векторная графика значительно уступает
растровой по силе художественного воздействия, у нее есть ог-
ромное преимущество - экономное расходование паняти. С помощью
одного и того же алгоритма, меняя входные параметры, можно по-
дучить бесконечное количество различных изображений. Исследова-
ния наших читателей показывают, например, что в программе ELITE
количество возможных галактик можно считать бесконечным, а в
каждой из них но 256 звезд и у каждой Вас ожидает огромное
количество неповторимых боевых ситуаций.

Векторную графику нередко используют в адвентюрны? играх,
ведь тан необходимо значительный объем памяти уделять текстовым
массивам (описанию обстановки, словарям и т. п. ) и для графики
остается очень мало места (THE HOBBIT. Valhalla. .. ). Имеется
прекрасный опыт использования векторной графики в программе
логико-стратегического направления - sehtihel. где количество
неповторимых задач измеряется десятками тысяч.

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

Блочная графика выглядит наиболее простейшим решением из
всех, но при творческом подходе позволяет получать очень непло-
хие изображения, зачастую не уступающие растровой графике.
Суть ее состоит в том, что изображение на экране строится из
заранее заготовленных блоков, которые по размеру обычно совпа-
дают с размерани стандартных символов 8X8. На блочный характер
графики в программах может указывать тот Факт, что на экране
присутствует значительное количество одинаковых элементов 8X8

В блочной графике проще решаются вопросы вывола на экран,
для этого ножно пользоваться стандартными процедурами ПЗУ. В
памяти проше хранить большое количество изображений, вместо
растровой копии можно хранить для каждого экрана "карту" разме-
щения блоков, которую можно выразить в виде символьной строки).
Все это позволяет программисту сократить расход памяти на про-
цедуры. обслуживающие экран, и сделать более мощный упор на
логику работы программы. Художественное впечатление, получающе-
еся при блочной графике, может быть неплохим (hanic hirer. JET
set willy. boulder dash) и даже весьма выразительным (dandy.
raharaha, avenger).

Как правило, блочная графика применяется для аркадных игр.
не стремящихся к максимальной жизненной реальности игровых си-
туаций. но она широко используется и в стратегических
(overlord. Stalingrad, conquest. .. ) ив традициионных (шахматы,
карты и т. п. ) ив логических играх (socoban,...). т. е. в тех
случаях, когда мы имеем дело с условной картой местности или с
игровым полем более или менее регулярной структуры.

1.2. Три подхода к воспроизведению графики.

ны разделили графику на три вида. Возможно, в этом есть
определенный волюнтаризм, поскольку конечно же нет никаких при-
чин, препятствующих использованию в одной программе всех трех
видов одновременно, а именно так и происходит на практике. Де-
ление это может быть и выглядит условным, ведь и в том и в
другом и в третьем случае решается одна и та же задача - запол-
нить экранную область памяти (16384... 23295) своими данными,
которые воспроизведутся на экране в виде нужной Ван картинки,
но вот приемы, которыми это достигается, с точки зрения техники
программирования, оказываются совершенно различными - только
поэтому мы рассмотриваем разные виды графики отдельно.

В принципе, вся эта книга и посвяшена этим приемам, но
если бы нас попросили в трех словах выразить различие в подхо-
дах к воспроизведению растровой, векторной и блочной графики,
то мы это сделали бы так:

Растровая графика - копирование.

Векторная графика - рисование.

Блочная графика - печать.

Построение растрового изображения на практике сводится к
КОПИРОВАНИЮ шаблона из оперативной памяти в экранную область.
На БЕИСИКе суть операций с растровой графикой выражается одной
строчкой:

POKE addr_l. (PEEK addr„2> - изображение шаблона
копируется из адреса addr 2 в область экрана addr_l.

На АССЕМБЛЕРе это же выглядит так:

LD HL. ADDR2
LD A.(HL)
LD HL. ADDR1
LD (HL).A

Построение векторного изображения исполняется путем изо-
бражения графических примитивов, к которым относятся: точки,
линии, дуги и окружности. На БЕИСИКе это выглядит тривиально -
PLOT, DRAW. CIRCLE. На АССЕНБЛЕРе же либо пользуются соответст-
вующими процедурами ПЗУ. либо пишут свои. Об основных приемах
мы говорили в книге "Элементарная графика". .Окрашивание замкну-
тых контуров гладким цветом или заполнение их текстурой выпол-
няют с помошью специально подготовленных для этого процедур
•заливки".

Построение блочного изображения проше всего представить,
как обычную печать заранее подготовленных символов. На БЕИСИКе
это тривиально - PRIHT AT. На АССЕНБЛЕРЕ используют либо проце-
дуру RST 16, либо одну из других процедур ПЗУ, рассмотренных
нами в предыдущей книге, либо пишут свою процедуру, опирающуюся
на RST 16.

1. 3. три основные проблемы.

С точки зрения программирования в машинном коде при рабо-
те с графикой есть три основные проблемы, которые приходится
решать, независимо от того, с каким методом воспроизведения
графики Вы имеете дело, они связаны с установлением соответ-
ствия между координатами изображения на экране и адресом в
экранной области памяти. Грубо говоря, как найти адрес в эк-
ранной области памяти для заданной экранной координаты?

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

- определение адреса в памяти, если экранные координаты
заданы в знакоместах;

- определение адреса в файле атрибутов по заданным
координатам (координаты цветовых атрибутов могут быть
заданы только в знакоместах).

- определение адреса в памяти, если экранные координаты
заданы в пикселах:

Подробному разбору соответствующих приемов и алгоритмов ны
посвятили первый том нашей серии, но кратко будет нелишним их
повторить для тех. кто его не читал или читал, но немного под-
забыл. Давайте будем условно считать, что экранные координаты
заданы в регистровой паре 1)Е, а искомый адрес будем Формировать
в регистровой паре HL. Причем в регистре D задаем координату X.
а в регистре Е - координату Y. Исключением является случай, ко-
гда координата задана в пикселах. В зтом случае байт памяти
указывает не на точку экрана, а на линию в знакоместе, для то-
го. чтобы указать на точку, надо еше определить номер бита в
байте. Для этого привлекаем регистр В. в котором и определяем
номер бита в искомом байте, который должен быть включен, чтобы
точка появилась на экране точно в заданной координате. Исполь-
зование для этой цели иненно регистра в имеет тот смысл, что
его сразу же можно использовать в качестве счетчика для органи-
зации с помошью команды DJNZ отсчета бита, подлежащего включе-
mn».

А: Расчет адреса в дисплейной Файле
(координаты заданы в знакоместах!.

Структурная схема:

Алгоритн GET_ADR_S

LD A. E LD А. Е RRA LD L. A

AND 18H AND 07 RRA

OR 40H OR A RRA

LD H. A RRA ADD A, D

Б: Расчет адреса в Файле атрибутов
(координаты заданы в знакоместах).

алгоритм get_adr_a

LD А. Е SRL A AND 07 RRA

AHD 18H OR 58H OR A RRA

SRL A LD H.A RRA ADD A. D

SRL A LD A. E RRA LD L, A

В. Расчет адреса в дисплейной- Файле
(координаты заданы в пикселах).

Алгоритм GET_ADR_P

LD A.AFH

RRA

RLCA

AND 07

SUB Е

XOR Е

XOR Е

LD В. A

LD Е.А

AND 0F8H

AND С7Н

LD A. 08

AND А

XOR Е

XOR Е

SUB В

RRA

LD Н. А

RLCA

LD В. A

SCF

LD A.D

RLCA

RRA

RLCA

LD L. A

AND А

RLCA

LD A.D

На этой ни закончим повторение материала первого тона и
перейдем непосредственно к методике работы с графикой в пользо-
вательских программах.




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Авторы - и приветы.
TRSН'SKАZKА - Вoщeм, жылa дa былa стaрaя гaвкaлкa и нe былo у нeё трёх сынoвeй...
Intro - вступительное слово.

В этот день...   26 июня