Отправляет email-рассылки с помощью сервиса Sendsay

Уроки по DirectX

  Все выпуски  

Уроки по DirectX - Урок 19. Использование освещения в DirectX 2


Direct3D для Visual C++. Рассылки сайта progs.biz
Выпуск № 40
 
Начало > DirectX > Direct3D > VC++.NET > Урок 19

Фленов М. DirectX и С++. Искусство программирования.
Фленов М. DirectX и С++. Искусство программирования
Заказать на Озоне

Подробнее


Полные версии уроков (с картинками): урок 19.

Direct3D для Visual C++
Урок 19. Использование освещения в DirectX 2

Продолжаем заниматься освещением в нашем приложении.

Теперь нам надо заняться непосредственно светом. Для этого мы заведем несколько переменных, инициализируем их и т. п. Все это мы вынесем в отдельный метод SetupLights:

VOID SetupLights()
{
    D3DMATERIAL9 mat; // Материал.
    D3DLIGHT9 light; // Свет.

    // Установка материала.
    ZeroMemory( &mat, sizeof(mat) );
    mat.Diffuse.r = mat.Ambient.r = 1.0f;
    mat.Diffuse.g = mat.Ambient.g = 1.0f;
    mat.Diffuse.b = mat.Ambient.b = 1.0f;
    //mat.Diffuse.a = mat.Ambient.a = 1.0f;
    g_pd3dDevice->SetMaterial(&mat);
    
    // Установка света.
    ZeroMemory(&light, sizeof(light));
    light.Type = D3DLIGHT_DIRECTIONAL;
    light.Diffuse.r = 1.0f;
    light.Diffuse.g = 1.0f;
    light.Diffuse.b = 1.0f;

    // Установка направления света.
    D3DXVECTOR3 dir = D3DXVECTOR3(1, -1, 1);
    D3DXVec3Normalize( (D3DXVECTOR3*)&light.Direction, &dir );

    //  Установка света в DirectX устройстве.
    g_pd3dDevice->SetLight( 0, &light );
    g_pd3dDevice->LightEnable( 0, TRUE );
    g_pd3dDevice->SetRenderState( D3DRS_LIGHTING, TRUE );
}

Теперь нам осталось наш метод SetupLights где-то вызвать. Это мы сделаем в методе Render - в начале отрисовки сцены:

    if(SUCCEEDED(g_pd3dDevice->BeginScene()))
    {
        SetupLights();
        ...

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

Рассылки сайта progs.biz
Visual C++, MFC
C# и .NET
VB.NET
ASP.NET
Win API
C/C++
Delphi
Java
HTML, PHP, mySQL, WEB-дизайн
Flash MX
C++ Builder
Ассемблер
SQL Server
DirectX
Обзор книг
Обзор программ
Новости сайта progs.biz


Parking.ru. Качественный виртуальный хостинг на платформе Windows(r): поддержка NET, многофункциональная панель управления, аренда бизнес-приложений, сертифицированные специалисты. Управляемый выделенный хостинг на платформе Windows(r): производительные серверы, профессиональная поддержка, аренда ПО Microsoft(r), безопасность, гарантии. http://www.parking.ru


Копирование любых материалов сайта без разрешения авторов и владельцев сайта запрещено.
© 2002-2007 сайт progs.biz
© 2002-2007 Игорь Алексеев

В избранное