Отрисовка из буфера вершин (Direct3D 9)

Для отрисовки данных вершин из буфера вершин требуется несколько шагов. Сначала необходимо задать источник потока, вызвав метод IDirect3DDevice9::SetStreamSource, как показано в следующем примере.

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

Первый параметр IDirect3DDevice9::SetStreamSource сообщает Direct3D источник потока данных устройства. Второй параметр — это буфер вершин для привязки к потоку данных. Третий параметр — это смещение от начала потока до начала данных вершины, выраженное в байтах. Четвертый параметр — это шаг компонента в байтах. В приведенном выше примере кода размер CUSTOMVERTEX определяет шаг компонента.

Следующим шагом является информирование Direct3D о том, какой шейдер вершин используется путем вызова метода IDirect3DDevice9::SetVertexShader. Следующий пример кода задает код FVF для шейдера вершин. Это сообщает Direct3D о типах вершин, с которыми он занимается.

d3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );

После задания источника потока и шейдера вершин любые методы рисования будут использовать буфер вершин. В приведённом ниже примере кода показано, как выполнять отрисовку вершин из буфера вершин с помощью метода IDirect3DDevice9::DrawPrimitive.

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

Второй параметр, который IDirect3DDevice9::DrawPrimitive принимает, это индекс первого вектора в буфере вершин.

буферы вершин

Отрисовка из буферов вершин и индексов (Direct3D 9)