Direct3D это компонент библиотеки DirectX, который поддерживает высокопроизводительную трехмерную визуализацию (rendering) и анимацию для Windows 95. Direct3D имеет два интерфейса: абстрактный режим (Retained Mode) и непосредственный режим (Immediate Mode). Абстрактный режим обеспечивает мощный интерфейс высокого уровня, который позволяет создавать и рисовать сложные трехмерные сцены. Непосредственный режим — это интерфейс низкого уровня для обработки элементарных треугольников, составляющих изображение. Функции абстрактного режима используют при работе непосредственный режим. В данной книге мы будем рассматривать только абстрактный режим.
Direct3D не был разработан фирмой Microsoft. Первоначально он был создан расположенной в Лондоне компанией RenderMorphics и назывался Reality Lab. В феврале 1995 года фирма Microsoft приобрела RenderMorphics и начала переработку Reality Lab для работы под Windows 95. В существующем виде Direct3D базируется на Direct Draw — части DirectX, работающей с двухмерной графикой. Direct3D применяет DirectDraw для работы с видеобуферами и использования механизма переключения страниц. Подобно DirectDraw, Direct3D написан таким образом, чтобы использовать любые установленные на видеоплате аппаратные ускорители (при условии, что у вас установлены правильные драйверы видеокарты). Когда приложение, использующее DirectDraw выполняется на компьютере с видеокартой, обеспечивающей аппаратное копирование прямоугольных областей изображения, сразу же увеличивается скорость работы. Когда приложение использующее Direct3D выполняется на компьютере с аппаратным ускорителем трехмерной графики, ускорение работы еще заметнее. Таким образом, для наилучшей работы требуется видеоплата с аппаратными ускорителями для двухмерной и трехмерной графики. Однако, наличие видеоплаты с ускорителем трехмерной графики не является необходимым для разработки приложений с использованием Direct3D 2.
Двумерный графический интерфейс пользователя, используемый Windows1, успешено используется текстовыми процессорами и электронными таблицами, поскольку документы и таблицы также двухмерные. Однако существуют приложения, для которых возможностей двухмерного интерфейса недостаточно. Такие программы, как учебные иммитаторы, обучающие программы, системы медицинского осмотра, программы архитектурного дизайна, игры и любые приложения виртуальной реальности показывают всю пользу применения трехмерной графики в реальном времени. Даже двухмерный рабочий стол может быть когда-нибудь заменен на трехмерный. Трехмерность не нова. Новостью является трехмерная графика на персональном компьютере в реальном времени, но мы быстро привыкаем к ней, поскольку трехмерная графика позволяет нам прекратить думать в двух измерениях и продолжать думать в трех.
Миллионы лет назад группа наших предков праздновала изобретение колеса. Новое изобретение, несомненно сразу же начало использоваться. Сегодня низкая стоимость аппаратных ускорителей трехмерной графики сделала их доступными для среднего компьютера, и пришло время их использования.
Если у вас возникли вопросы, комментарии или замечания, можете написать автору по адресу 75233.1506@compuserve.com.
1 Графический интерфейс пользователя был разработан в компании Xerox. Часто создание графического интерфейса связывают с компанией Apple поскольку компьютер Apple Macintosh был первым широко распространенным компьютером, использующим графический интерфейс пользователя.
2 Большая часть программ, приведенных в этой книге, создавалась без применения плат с аппаратным ускорителем трехмерной графики.
Для работы с книгой подойдет любая машина с установленной системой Windows 95. С практической точки зрения, однако, лучше использовать компьютер с процессором Pentium и 16 мегабайтами памяти. Поскольку Visual C++, DirectX и программы из этой книги поставляются на CD-ROM, вам потребуется дисковод для чтения дисков CD-ROM. Также необходима видеокарта, которая может работать с DirectX.
Чтобы эффективно пользоваться этой книгой, вы должны быть программистом и знать язык C++. Нет необходимости быть экспертом по C++, но вам необходимо понимать такие особенности языка, как классы и виртуальные функции. Некоторые из этих идей становятся ясными при рассмотрении контекста в котором они используются, но лучше всего обратиться к классическим книгам по C++, таким как «Язык программирования C++» Бьерна Страуструпа и «Изучаем C++» Эла Стивенса.
Вам необходимо быть знакомым с Visual C++ и библиотекой MFC (Microsoft Foundation Classes). Мы будем использовать только часть возможностей MFC, так что особого мастерства не требуется.
Также потребуется знание основных концепций трехмерной графики, но обширные математические знания не являются необходимыми. Также не требуется детальное понимание работы алгоритмов растеризации, перспективной трансформации и затенения по Фонгу, используемых в этой книге.
Чтобы использовать Direct3D вам необходимы Visual C++ версии4.0 или выше, DirectX версии 2.0 или выше и Windows 95.