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

Листинг 17.7. Проверка вертикальной трассировки.

Применение палитр других изображений | Специальные соображения по поводу цифрового видео | Переходы от одного кирпичика к другому | Двери и лифты | Специальные эффекты и движущиеся стены | ТЕХНИКА СОЗДАНИЙ ПАРАЛЛАКСА | Листинг 17.1. Файл заголовка демонстрационной программы циклического скроллинга (PARAL.H). | Листинг 17.2 Демонстрационная программа повторяемого смещения. | Листинг 17.3. Простой двойной параллакс (PARAL1.C). | Листинг 17.4. Оптимизированная подпрограмма (BLIT.ASM). |


Читайте также:
  1. Gt; Первый этап — проверка итогов предыдущей ра­боты.
  2. I. Проверка домашнего задания.
  3. KE-Jetronic -Проверка,поиск неисправностей
  4. А) ПРОВЕРКА ОПОРНОЙ ПЛОЩАДКИ РЕБРА НА СМЯТИЕ
  5. А8. Проверка выполнения некоторого условия
  6. Актер я или нет. Проверка жестокого приговора
  7. Б) Приближенный аналитический метод (проверка изменения знака).

asm mov dx,0x3da

NoRetrace:

asm in al,dx

asm and al,8

аsm jz NoRetrace // ждать, пока трассировка завершится

Retrace:

asm in al,dx

asm and al,8

asm jnz Retrace // ждать начала трассировки

Программа в этой главе не выполняет проверку вертикальной трассировки. Это было сделано для того, чтобы свести к минимуму использование ассемблера. Настоятельно рекомендую использовать этот фрагмент во всех программах вывода графики.

PCX-графика

Для удобства все картинки, использованные в этой главе, сохранены на диске как 256-цветные PCX-файлы. Формат PCX был выбран главным образом потому, что его легко читать и данные изображения в нем содержатся в сжатом виде. Немаловажно и то, что формат PCX поддерживается большинством графических редакторов (для получения более полной информации по PCX-файлам смотрите пятую главу, "Секреты VGA-карт").

Примечания по выполнении

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

Это происходит потому, что время доступа к системной памяти значительно выше, чем к области видеобуфера. Однако, это не всегда справедливо. Некоторые адаптеры, такие как LOCAL BUS, работают значительно быстрее.

Существует несколько путей повышения производительности программ. Где только возможно, вы должны избегать вызовов функций и вместо этого использовать макросы. Команды, в которых отсутствуют вызовы функций, не содержат накладных расходов. Другой удар по быстродействию — это обилие аргументов, передаваемых функциям. Параметры передаются через стек, и каждая операция обмена со стеком отнимает драгоценное время. Несколько удачно подобранных глобальных переменных могут значительно увеличить скорость выполнения некоторых критических циклов.

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

Если вам никак не обойтись без цикла FOR, попробуйте его развернуть. Некоторые оптимизирующие компиляторы будут пытаться развернуть циклы, но гораздо практичнее это сделать вручную (мы подробно рассмотрим методику разворачивания циклов в восемнадцатой главе «Техника оптимизации»).

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

Ваша стратегия должна выглядеть так:

§ При разработке новых алгоритмов пишите функции на Си;

§ Занимайтесь их отладкой до тех пор, пока не убедитесь, что они правильно работают и соответствуют тем задачам, для которых предназначены;

§ Найдите наиболее критичные по быстродействию части программы и перепишите их на ассемблере.

Примечание

Вам понравилась графика, использованная в этой главе в демонстрационных целях? Я уверен, что понравилась. Не будет преувеличением сказать, что качественные рисунки облагораживают игру в целом. Вся графика, использованная в этой главе, была пожертвована автором шестнадцатой главы Дениз Тайлер. Спасибо Дениз!

ИТОГ

Существует множество различных способов моделирования параллакса. Методы, представленные в этой главе, не являются самыми быстрыми и наиболее элегантными. Однако они обладают тем достоинством, что они относительно просты в реализации и для понимания.

Уверен, что применение технических приемов из этой И других глав при разработке своих собственных игр доставит вам немало удовольствия. Не бойтесь экспериментировать! Это истинное наслаждение.


 


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


<== предыдущая страница | следующая страница ==>
Листинг 17.6. Демонстрационная программа мозаичного смещающегося слоя (TILES.C).| ТЕХНИКА ОПТИМИЗАЦИИ

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