ПРОГРАМИРУЕМ 3D ГРАФИКУ ИСПОЛЬЗУЯ DirectX


DirectSD - часть 12


Теперь у нас есть макет с фоном, освещением, заданным положением камеры и проекционной пирамидой. Не хватает лишь объекта.

Выполнение тестов

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

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

void CTestHnd::Testl() (

// Получить указатели на первичный и вторичный буфера CDDSurface* рВВ = m_pDD-»GetBackBuffer () ;

ASSERT(pBB) ;

CDDSurface* pFB = m_pDD-»GetFrontBuffer();

ASSERT(pFB) ;

/b> ЩУ Глава 13. DirectSD

// Получить прямоугольник, описывающий первичный буфер RECT rcFront;

if (m_pTI-»bFullScreen) {

pFB-»GetRect (rcFront) ;

} else f

GetClientRect(&rcFront) ;

ClientToScreen(&rcFront) ;

)

// Получить прямоугольник, описывающий вторичный буфер RECT rcBack;

pBB-»GetRect (rcBack) ;

Мы получаем указатели на первичный и вторичный буфера и их размер. Данный фрагмент совпадает с соответствующим местом из примера DDEval.

// Создать список вершин фигуры (некое подобие пирамиды) D3DVERTEX vShape [] = {

{ // xyz вершин

D3DVAL(-0.3), D3DVAL(-0.1), D3DVAL( 0.1),

// xyz нормалей

D3DVAL(-1.0), D3DVAL(-1.0), D3DVAL(-1.0),

// uv текстуры

D3DVAL( 0.0), D3DVAL( 0.0)

}, { D3DVAL( 0.3), D3DVAL(-0.1), D3DVAL( 0.2),

D3DVAL( 1.0), D3DVAL(-1.0), D3DVAL(-1.0),

D3DVAL( 0.0), D3DVAL( 0.0) }, { D3DVAL( 0.0), D3DVAL(-0.3), D3DVAL( 0.3),

D3DVAL( 0.0), D3DVAL(-1.0), D3DVAL( 1.0),




Начало  Назад  Вперед



Книжный магазин