Суровая правда жизни о 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 - буду резать, буду шить - все равно тебе не жить