Отрисовка из буфера вершин (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 );
После установки источника потока и вершинного шейдера все методы draw будут использовать буфер вершин. В приведенном ниже примере кода показано, как отобразить вершины из буфера вершин с помощью метода IDirect3DDevice9::D rawPrimitive .
d3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 1 );
Второй параметр, который принимает IDirect3DDevice9::D rawPrimitive , — это индекс первого вектора в буфере вершин для загрузки.
Связанные темы