Rambler's Top100

 GDsW - Game Developer's World    

.: DirectX: Советы и Секреты :.


DirectX: Советы и Секреты

Еще один совет по кодам возврата (return codes).

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


А Вы используете оверлеи?

Много акселераторов на рынке сегодня поддерживают оверлейные поверхности DirectDraw, но бытует убеждение, что оверлеи нужны только чтобы воспроизводить видео. Если оверлеи доступны в форматах RGB, они могут одинаково хорошо использоваться для графики и часто результаты использования оверлеев намного лучше чем стретчинг с помощью Blt, так как аппаратные средства оверлеев включают интерполятивное масштабирование.

Изменения кода, чтобы использовать оверлеи вместо обычных offscreen-поверхностей небольшие, так что лучше использовать их, если они поддерживаются.


Проверяйте коды возврата!

Большинство обращений к DirectDraw асинхронные. Поэтому в случае нескольких обращений, если предыдущие операции не завершены, можно получить нулевой результат. Жизненно важно, что Вы проверяете все коды возврата из функций Blt, Lock и Flip. Все эти обращения могут закончиться неудачей с выдачей DDERR_WASSTILLDRAWING, указывая, что запрошенное действие не планировалось и, если Вы не проверите это, все закончится с не полностью выведенными фреймами и непредсказуемыми результатами.


Минимизируйте время блокирования поверхностей

Вы должны минимизировать время блокирования (Lock) поверхности. Также необходимо помещать те вызовы, которые требуют блокирования, в начале прорисовки кадра. 
Дело в том, что если вызов выполняется на акселераторе, каждый раз при прорисовке поверхность блокируется HAL-ом. Это не будет позволять осуществиться блокировке(Lock), если до этого начали выполняться операции, связанные с HAL. Но если Вы поместите блокировку(Lock) в начале отрисовки кадра, вы можете затем использовать аппаратные blits, которые регистрируются в H/W очереди и CPU может разгрузиться и выполнять другие операции. 
Обратите внимание, что операции, которые эмулированы через HEL, выполняют блокировку HAL без извещения приложения. Так что определите реальные и эмулированные функции, и затем используйте только неэмулированные графические операции.


Избегайте чтений из видеопамяти.

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

главная ] Общеигровые статьи на GDsW ] DirectX ] Статьи по графике ] Статьи по AI ] Юмор ]

 

.: DirectX: Советы и Секреты :.

Rambler's Top100 Рейтинг@Mail.ru List.ru - каталог ресурсов интернет Белорусский каталог BelResource

Copyright IRsoft, web-master Keeper. All rights reserved!

Хостинг от uCoz