(((((a)&0xff )«24) I (((r)&0xff )«16) | (((g)&0xff )«8) | ((b)&0xff))) //Но если нам нужно, чтобы задание цвета выглядело ближе к принятому в // OpenGL. то можно использовать макрос, приводящий к выполнению избыточных //вычислений

#defi ne D3DCOLOR_COLORVALUE(г.g.b.a)

D3DCOLOR_RGBA( (DWORD)((r)*255.f). (DWORD)((g)*255.f).
(DWORD)((b)*255.f). (DWORD)((a)*255.f))
void RenderDX(HWND hWnd) {

Device->SetViewport(&VP); //Задание рабочей области. //Настройка конвейера.

int е - Device->SetFVF( SCREENVERTEX); //Сообщаем, какой у нас формат вершины. Device->SetRenderState(D3DRS_CULLM0DE. D3DCULL_N0NE): //Очистка области просмотра в буфере цвета и Z-буфере: Device->Clear(0. NULL. D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER.

D3DC0L0R_C0L0RVALUE(0.9.0.9.0.9.0). l.Of. 0): if(SUCCEEDEDC Device->BeginScene())) //Начало вывода примитивов. {

HRESULT res-Device->DrawPrimitiveUP(

D3DPTJRIANGLELIST. //Тип примитива. 2. // Количество примитивов.

&S_vertices. //Адрес первой обрабатываемой вершины в массиве, sizeof( SCREENVERTEX)); //Шаг следования вершин. //Чтобы использовался заданный в массиве цвет вершины, //выключаем расчет освещения

Device->SetRenderState( D3DRS_LIGHTING. FALSE ); HRESULT res-Device->DrawPrimitiveUP(D3DPT_TRIANGLEL1ST.
2. &R vertices, sizeof( ROOMVERTEX));

Вывод треугольников

Device->EndScene(); }

Device->Present(NULL. NULL. NULL. NULL); //Смена страниц. }

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

Метод Devi се->С1 ear О в зависимости от сочетания флагов очищает до трех буферов. При значениях NULL в первых двух параметрах очищается не BackBuffer, a Vi ewport. Это означает, что при задании области просмотра, меньшей, чем поверхность рисования, очистится только часть окна.


⇐ Предыдущая| |Следующая ⇒