ПРОГРАМИРУЕМ 3D ГРАФИКУ ИСПОЛЬЗУЯ DirectX



         

Введение - часть 3


В комплект DirectX 2 SDK входят интерфейсы прикладных программ Direct3D, Directlnput, DirectSound, Direct3Dsound, DirectDraw и DirectPlay. Мы будем пользоваться интерфейсами Direct3D, DirectDraw и Directlnput, однако обойдемся без DirectSound и DirectPlay. В некоторых приложениях используется звук; если на вашем компьютере установлена звуковая карта, то время от времени вы будете приятно удивлены. Интерфейс Direct3D на самом деле состоит из нескольких уровней, самый верхний из которых носит название «абстрактного режима» (Retained Mode). Под ним находится уровень, называемый «непосредственным режимом» (Immediate Mode), а еще ниже — драйверы устройств. Иногда

• Отечестпеипому читателю можно порекомендовать, например, кпт-у Е. В. Шикипа, А. В. Борсс-коиа ^Компьютерная графика. Динамика, реалистические изображения». М.: Диалог-МИФИ, 1995. — Примеч. перец.

ч «* ••'^^w? ,-,

1 2. W Введение

в тексте книги упоминается «механизм визуализации» (rendering engine). Я использую этот термин, подразумевая библиотеку DirectSD в целом, от уровня абстрактного режима до драйверов, а не только растровый генератор (rasterizer), относящийся к непосредственному режиму.

Стиль программирования

Не беспокойтесь, вы не услышите тирады о правильной расстановке отступов или о положении фигурных скобок; я лишь хочу сделать несколько замечаний, относящихся к примерам программ — это именно примеры, не претендующие на роль прототипа рабочей программы. Во многих случаях я упростил код, отказавшись от обработки ошибок и использовав вместо нее директиву ASSERT для осуществления runtime-проверки в отладочной версии. Подобный метод помогает быстро находить самые «глупые» ошибки и выделять те фрагменты, в которых следует производить более тщательную обработку ошибок. Кроме того, учтите, что runtime-исключения в примерах не обрабатываются вообще. Чаще всего исключения возникают при распределении памяти, а это может происходить при конструировании многих различных объектов C++. Следует заметить, что вызов ASSERT для указателей, созданных оператором new, оказывается бессмысленным, так как реализация new для библиотек MFC самостоятельно возбуждает исключение при нехватке памяти для размещения объекта. Итак, для наших целей можно считать, что оператор new всегда работает успешно.




Содержание  Назад  Вперед