ЖУРНАЛ ХАКЕР

Суровая правда жизни о Direct3D

Спецвыпуск Хакер, номер #004, стр. 004-098-9


Листинг №9 - Main.cpp, рендеринг

HRESULT Render()

{

HRESULT hr;

FLOAT fCos = (FLOAT)cos(((FLOAT)clock())/CLOCKS_PER_SEC * 4); //Вычисляем косинус угла поворота. Где угол поворота равен времени работы программы, деленного на количество кадров в секунду * .

FLOAT fSin = (FLOAT)sin(((FLOAT)clock())/CLOCKS_PER_SEC * 4); //Вычисляем синус от него же

D3DMATRIX matSpin;

//Заполняем матрицу, соответствующую матрице поворота вокруг оси Y

matSpin._11 = fCos; matSpin._12 = 0.0f; matSpin._13 =-fSin; matSpin._14 = 0.0f;

matSpin._21 = 0.0f; matSpin._22 = 1.0f; matSpin._23 = 0.0f; matSpin._24 = 0.0f;

matSpin._31 = fSin; matSpin._32 = 0.0f; matSpin._33 = fCos; matSpin._34 = 0.0f;

matSpin._41 = 0.0f; matSpin._42 = 0.0f; matSpin._43 = 0.0f; matSpin._44 = 1.0f;

//Делаем ее в качестве мировой матрицы (все-таки это звучит неплохо)

lpD3DD->SetTransform(D3DTRANSFORMSTATE_WORLD, &matSpin);

lpD3DD->Clear(0, NULL, D3DCLEAR_TARGET, 0x00000000, 0L, 0L); //Очищаем экран

hr = lpD3DD->BeginScene(); //Начинаем рисовать :)

if(FAILED(hr)) return hr;

lpD3DD->DrawPrimitive(D3DPT_TRIANGLELIST, //Рисуем полигоны

D3DFVF_VERTEX, //Храня их вершины в переменной типа D3DVERTEX

vtx, 6, D3DDP_WAIT); //Имя переменной vtx, кол-во вершин - 6, ждем, пока оно рисует

hr = lpD3DD->EndScene(); //Заканчиваем рисовать

if(FAILED(hr)) return hr;

hr = lpM->Flip(NULL, DDFLIP_WAIT); //Выводим на экран

if(FAILED(hr)) return hr;

return S_OK;

}

Конец листинга 9.

А теперь переходим к водным процедурам...

Пытка №5 - буду резать, буду шить - все равно тебе не жить

Назад на стр. 004-098-8  Содержание  Вперед на стр. 004-098-10