Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Листинг 5.5. Программа быстрого рисования точки.

Листинг 4.2. Программа, рисующая линии (LINER.С). | Листинг 4.4. Структуры данных для задания вершин объектов. | Листинг 4.5. Описание астероида. | Листинг 4.6. Масштабирование астероида. | Листинг 4.7. Вращение объекта. | Листинг 4.8. Программа, которая рисует поле астероидов (FIELD.С). | Листинг 4.9. Определение и умножение двух матриц. | Листинг 4.11. Супер Астероиды (FIELD.C). | СЕКРЕТЫ VGA-КАРТ | Листинг 5.3. Создание новой цветовой палитры. |


Читайте также:
  1. I. УЧЕБНАЯ ПРОГРАММА ДИСЦИПЛИНЫ
  2. II Программа сроки и место проведения Форума
  3. V. ПРОГРАММА СОРЕВНОВАНИЙ
  4. VII. Программа проведения работ и ее обоснование
  5. Анализ процесса рисования
  6. Антивирусная программа
  7. В мотивационных программах должна принимать участие вся команда ресторана.

void Plot_Pixel_Fast (int x, int y, unsigned char color)

{

// эта функция рисует точку несколько быстрее за счет замены

// операции умножения на сдвиг

// учитываем, что 320*у=256*у+64*у=у<<8+у<<б

video_buffer[((у<<8) +(у<<6)) + х ] = color;

} // конец функции

Эта функция работает примерно в два раза быстрее — вот что значит оптимизация. Позже мы научимся оптимизировать программы так, что парни из Microsoft перестанут нам верить.

Теперь, когда у нас есть функция рисования точки, надо дополнить нашу графическую библиотеку функцией рисования линии.

Рисование линий

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

Мы напишем две функции. Одна из них рисует горизонтальные линии слева направо, а другая — вертикальные сверху вниз. Рисунок 5.4 показывает, как они выглядят в видеобуфере.

Поскольку горизонтальные линии рисовать легче, то с них мы и начнем. Как видно из рисунка 5.4, горизонтальную линию можно получить, заполняя ряд пикселей в матрице 320х200. Чтобы это проделать, мы должны найти начальный адрес строки и заполнить ее значениями пикселей от начальной до конечной позиции. Для этого стоит использовать функцию rnemset. Это один из самых быстрых способов. Листинг 5,6 содержит код такой функции.


Дата добавления: 2015-07-12; просмотров: 107 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Листинг 5.4. Рисование точки в позиции (х,у).| Листинг 5.6. Рисование горизонтальной линии.

mybiblioteka.su - 2015-2024 год. (0.008 сек.)