Tuesday, March 25th, 2008 | Author: admin

Итак, теперь у нас есть готовый к применению класс d3d_point_mass. Давайте используем его в программе. Но прежде чем мы это сделаем, я хочу немного поговорить об освещении в Direct3D. Мы воспользуемся некоторыми возможностями Direct3D по моделированию освещения, чтобы получить в примере программы реалистично выглядящий шар.
ВКЛЮЧЕНИЕ МОДЕЛИРОВАНИЯ ОСВЕЩЕНИЯ В DIRECT3D
Игре можно заметно добавить реалистичности, используя возможности моделирования освещения, присутствующие в Direct3D. Мы могли бы глубоко погрузиться в обсуждение поведения света в природе и моделирования этого поведения в Direct3D. Но мы не будем этого делать. Хоть свет и физическое явление, он не рассматривается в данной книге. Мы занимаемся созданием реалистично ведущих себя, а не красиво выглядящих объектов.Для наших целей нам достаточно знать, что DirectX обладает обширными возможностями по работе с освещением в ЗО-сценах. Он поддерживает несколько видов света — как от точечных источников, так и рассеянного. Пока нас интересует только рассеянный свет.
Цвет объекта, который мы видим на экране, когда объект отображается с помощью Direct3D, определяется цветом материала объекта и цветом падающего на объект света. Если на объект нанесена текстура, то оказывает влияние и ее цвет. Но пока не будем пытаться разобраться подробнее.
Шарик, отображаемый в примере программы, будет синего цвета. Все, что нам нужно, чтобы шарик был синим и круглым. Используя рассеянный свет, мы можем этого добиться. Поэтому давайте внесем в платформу небольшие изменения, которые позволят нам использовать рассеянный свет.
Сначала нужно изменить функцию InitD3D () в файле PMD3DApp. срр, чтобы она задействовала возможности моделирования освещения в Di-rect3D. Посмотрите на исходный код в файле с компакт-диска. Откройте файл PMD3DApp.cpp в папке Source\Chapter07\PointMass и найдите в нем функцию InitD3D (). В конце этой функции есть такая строка:
TheApp.d3dDevice->SetRenderState(D3DRS_LIGHTING, theApp.enableD3DLighting);
В предыдущих главах моделирование освещения отключалось, поэтому эта строка выглядела как
theApp.d3dDevice->SetRenderState(D3DRS_LIGHTING,TRUE);
Теперь нужно передать эту информацию платформе в функции OnAppLoad (). Код этой функции приведен ниже в листинге 7.5.

Tags: D3DCOLOR, Применение, сфер

Related posts

You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
Leave a Reply