Renderização a partir de um buffer de vértice (Direct3D 9)
A renderização de dados de vértice a partir de um buffer de vértice requer algumas etapas. Primeiro, você precisa definir a origem do fluxo chamando o IDirect3DDevice9::SetStreamSource método, conforme mostrado no exemplo a seguir.
d3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) );
O primeiro parâmetro do IDirect3DDevice9::SetStreamSource informa ao Direct3D a origem do fluxo de dados do dispositivo. O segundo parâmetro é o buffer de vértice para ligar ao fluxo de dados. O terceiro parâmetro é o deslocamento do início do fluxo para o início dos dados de vértice, em bytes. O quarto parâmetro é o passo do componente, em bytes. No código de exemplo acima, o tamanho de um CUSTOMVERTEX é usado para a passada do componente.
A próxima etapa é informar ao Direct3D qual sombreador de vértice usar chamando o IDirect3DDevice9::SetVertexShader método. O código de exemplo a seguir define um código FVF para o sombreador de vértice. Isso informa o Direct3D sobre os tipos de vértices com os quais está lidando.
d3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
Depois de definir a origem do fluxo de dados e o sombreador de vértices, todos os métodos de renderização usarão o buffer de vértices. O exemplo de código abaixo mostra como renderizar vértices de um buffer de vértice com o método IDirect3DDevice9::DrawPrimitive.
d3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 1 );
O segundo parâmetro que IDirect3DDevice9::DrawPrimitive aceita é o índice do primeiro vetor a carregar no buffer de vértices.
Tópicos relacionados