Rendern aus einem Vertexpuffer (Direct3D 9)
Das Rendern von Scheitelpunktdaten aus einem Vertexpuffer erfordert einige Schritte. Zunächst müssen Sie die Streamquelle festlegen, indem Sie die IDirect3DDevice9::SetStreamSource-Methode aufrufen, wie im folgenden Beispiel gezeigt.
d3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) );
Der erste Parameter von IDirect3DDevice9::SetStreamSource teilt Direct3D die Quelle des Gerätedatenstroms mit. Der zweite Parameter ist der Vertexpuffer, der an den Datenstrom gebunden werden soll. Der dritte Parameter ist der Offset vom Anfang des Datenstroms bis zum Anfang der Vertexdaten in Bytes. Der vierte Parameter ist der Schritt der Komponente in Bytes. Im obigen Beispielcode wird die Größe eines CUSTOMVERTEX für den Schritt der Komponente verwendet.
Der nächste Schritt besteht darin, Direct3D zu informieren, welcher Vertexshader verwendet werden soll, indem Sie die IDirect3DDevice9::SetVertexShader-Methode aufrufen. Der folgende Beispielcode legt einen FVF-Code für den Vertexshader fest. Dadurch wird Direct3D über die Arten von Scheitelpunkten informiert, mit denen es sich befasst.
d3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
Nach dem Festlegen der Streamquelle und des Vertexshaders verwenden alle Draw-Methoden den Vertexpuffer. Das folgende Codebeispiel zeigt, wie Scheitelpunkte aus einem Vertexpuffer mit der IDirect3DDevice9::D rawPrimitive-Methode gerendert werden.
d3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 1 );
Der zweite Parameter, den IDirect3DDevice9::D rawPrimitive akzeptiert, ist der Index des ersten Vektors im zu ladenden Vertexpuffer.
Zugehörige Themen