Откровенно говоря, рассеянный свет — довольно скучная вещь. Он полезен, особенно когда применяется совместно с источниками света других типов, но сам по себе рассеянный свет весьма невыразителен. После нескольких безуспешных попыток создать демонстрационную программу, в которой использовался бы только рассеянный свет, я отступил и решил, что рассеянный свет не заслуживает собственного примера. Вместо этого давайте применим мастер Direct3D AppWizard чтобы создать приложение, в котором рассеянный свет будет использоваться для освещения выбранного вами объекта.
Запустите программу Visual C++ Developer Studio, и выберите команду New в меню File. На экран будет выведено диалоговое окно New. Выберите в списке пункт Project Workspace. Будет открыто диалоговое окно New Project Workspace. В списке Type выберите Direct3D AppWizard, введите имя проекта, например AmbientLight, в поле Name, и щелкните по кнопке Create.
На экран будет выведено первое окно мастера Direct3D AppWizard. Щелкните по кнопке Next. В следующем диалоговом окне вам будет предложено выбрать объект, который будет отображать новое приложение. По умолчанию используется объект Swirl (завиток). Выберите переключатель Let me choose an object и введите имя объекта в текстовом поле Object, либо щелкните по кнопке Browse и воспользуйтесь диалоговым окном выбора файла. На рис. 6.1 показано диалоговое окно Object Selection в котором выбран файл sphere1.x из DirectX SDK.
Рис. 6.1. Диалоговое окно выбора объекта мастера Direct3D AppWizard
СОВЕТ | Содержимое X-файлов. Помните, что вы должны выбрать X-файл, содержащий единственную сетку. X-файлы, содержащие анимации или иерархию фреймов, будут отображаться неправильно. Большинство X-файлов на сопроводительном CD-ROM содержат единственную сетку. |
После того, как вы выбрали сетку, которая будет отображаться приложением, щелкните по кнопке Next.
На экран будет выведено диалоговое окно, позволяющее выбрать используемые в приложении источники света. Внешний вид этого окна показан на рис. 6.2.
Рис. 6.2. Окно выбора источников света мастера Direct3D AppWizard
По умолчанию используется источник направленного света. Снимите флажок Directional и установите флажок Ambient. Кроме того, в группе Color Model установите переключатель RGB. Это позволит использовать цветное освещение. После всех изменений диалоговое окно Light Selection должно выглядеть так, как показано на рис. 6.2.
В следующих диалоговых окнах оставьте предлагаемые по умолчанию параметры, и в завершающем окне щелкните по кнопке Finish. Мастер AppWizard выведет окно с просьбой подтвердить правильность заданных параметров. Щелкните по кнопке OK. Developer Studio создаст новое приложение в соответствии с указанными вами параметрами. Когда Developer Studio завершит работу (это не займет много времени), скомпилируйте и запустите новое приложение. Окно нового приложения должно выглядеть аналогично рис. 6.3 (особенно, если вы выбрали в качестве объекта файл sphere1.x).
Рис. 6.3. Приложение, созданное с помощью мастера Direct3D AppWizard
СОВЕТ | Предупреждения о включаемых файлах. Когда вы в первый раз компилируете новый проект, или когда в меню Build выбрана команда Update All Dependencies Visual C++ часто выводит несколько предупреждений. Это происходит потому что компилятор пытается обнаружить все указанные в директивах #include включаемые файлы и выводит предупреждение всякий раз, когда не может обнаружить требуемый файл. К сожалению, поиск включаемых файлов выполняется до обработки программы препроцессором. Это означает, что включаемые файлы, которые не используются в проекте из-за директив условной компиляции #ifdef все равно будут искаться среди включаемых файлов проекта. Предупреждения об их отсутствии можно игнорировать. |
Независимо от того, какой объект вы выбрали, он, скорее всего, выглядит не очень хорошо. Это связано с тем, что источник рассеянного света освещает каждую часть сетки с одинаковой интенсивностью. В результате мы видим силуэт объекта. Если наложить на сетку текстуру, результат будет чуть лучше, но изображение все равно останется скучным и плоским.
Мы используем только что созданный проект для демонстрации следующих технологий: