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

Уроки по DirectX

  Все выпуски  

Уроки по DirectX


Информационный Канал Subscribe.Ru

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

С. Гайдуков. OpenGL. Профессиональное программирование трехмерной графики на C++.
С. Гайдуков. OpenGL. Профессиональное программирование трехмерной графики на C++
Заказать на Озоне

Подробнее


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

Direct3D для Visual C++
Урок 7. Добавление матриц преобразований

Сейчас наш треугольник не показывается вовсе. Для этого нам надо добавить матрицы преобразований - т. е. мы хотим сделать несколько последовательных преобразований так, чтобы в конце концов треугольник предстал перед нашим взором.

Приступаем к практике. Для этого добавляем сразу в наш код функцию SetupMatrices. Вот ее код:

VOID SetupMatrices()
{
    D3DXMATRIXA16 matWorld;

    // Вращение треугольника.
    UINT  iTime  = timeGetTime() % 1000;
    FLOAT fAngle = iTime * (2.0f * D3DX_PI) / 1000.0f;
    D3DXMatrixRotationY( &matWorld, fAngle );
    g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );

    // Видовая матрица.
    D3DXVECTOR3 vEyePt( 0.0f, 3.0f,-5.0f );
    D3DXVECTOR3 vLookatPt( 0.0f, 0.0f, 0.0f );
    D3DXVECTOR3 vUpVec( 0.0f, 1.0f, 0.0f );
    D3DXMATRIXA16 matView;
    D3DXMatrixLookAtLH( &matView, &vEyePt, &vLookatPt, &vUpVec );
    g_pd3dDevice->SetTransform( D3DTS_VIEW, &matView );

    // Матрица проекции.
    D3DXMATRIXA16 matProj;
    D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/4, 1.0f, 1.0f, 100.0f );
    g_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );
}

Кратко говоря, мы тут используем три типа преобразований - а именно преобразование мировых координат (мы просто вращаем наш треугольник), далее мы создаем и применяем видовую матрицу (т. е. как мы наш треугольник будем видеть: с какой точки и др.) и, наконец, мы создаем и применяем матрицу проекции. все это более подробно мы разберем на последующих уроках - пока же только код.

Так как мы тут используем некоторые продвинутые возможности DirectX, то мы должны сделать соответствующий include:

#include <d3dx9.h>

Кроме того, нам понадобится еще один include для использования функции

#include <windows.h>

Кроме того (что можно прочитать в MSDN'е) надо для использования этой же функции добавить winmm.lib (как это делать - см. урок 3).

Пока мы получили вполне компилябильный код. Правда, наш треугольник так и не показывается, но это уж на следующем уроке.

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


PARKING.RU. Качественный ВИРТУАЛЬНЫЙ ХОСТИНГ на платформе Windows(r): поддержка NET, многофункциональная панель управления, аренда бизнес-приложений, сертифицированные специалисты. Управляемый ВЫДЕЛЕННЫЙ ХОСТИНГ на платформе Windows(r): производительные серверы, профессиональная поддержка, аренда ПО Microsoft(r), безопасность, гарантии. http://www.parking.ru


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

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.directxlessons
Отписаться

В избранное