Udostępnij przez


Renderowanie z bufora wierzchołków (Direct3D 9)

Renderowanie danych z wierzchołków z bufora wierzchołków wymaga wykonania paru kroków. Najpierw należy ustawić źródło strumienia, wywołując metodę IDirect3DDevice9::SetStreamSource, jak pokazano w poniższym przykładzie.

d3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) );

Pierwszy parametr IDirect3DDevice9::SetStreamSource informuje Direct3D źródło strumienia danych urządzenia. Drugi parametr to bufor wierzchołka, który ma być powiązany ze strumieniem danych. Trzeci parametr to przesunięcie od początku strumienia do początku danych wierzchołków, wyrażone w bajtach. Czwarty parametr jest krokiem składnika w bajtach. W powyższym przykładowym kodzie rozmiar elementu CUSTOMVERTEX jest używany na potrzeby kroku składnika.

Następnym krokiem jest poinformowanie Direct3D, którego vertex shader ma być używany przez wywołanie metody IDirect3DDevice9::SetVertexShader. Poniższy przykładowy kod ustawia kod FVF dla cieniowania wierzchołków. Informuje to Direct3D o typach wierzchołków, z którymi ma do czynienia.

d3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );

Po ustawieniu źródła strumienia i cieniowania wierzchołków wszystkie metody rysowania będą używać buforu wierzchołka. Poniższy przykład kodu pokazuje, jak przetwarzać wierzchołki z buforu wierzchołka metodą IDirect3DDevice9::DrawPrimitive.

d3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 1 );

Drugi parametr, który IDirect3DDevice9::DrawPrimitive akceptuje, to indeks pierwszego wektora do załadowania w buforze wierzchołków.

Bufory wierzchołków

Renderowanie z buforów wierzchołków i indeksów (Direct3D 9)