Instancing; Zuweisung der Vertexdaten

Nachdem ich stundenlang versucht habe, den Fehler in meinem Testprogramm zu finden, möchte ich das Ergebnis hier mit Euch teilen.
Ursprünglich war das Programm für eine Normale Anzeige eines aus Primitiven (3 gleichseitige Dreiecke) mit selbst gebasteltem Shader für die Beleuchtung vorgesehen.
Alle notwendigen Daten konnten über die in der XNA-Bibliothek integrierte Struktur „VertexPositionColorTexture“ an den Shader weitergegeben werden.
Die Zuweisung der Struktur musste dann wie folgt aussehen:

vertexDeclaration = new VertexDeclaration(
this.GraphicsDevice, VertexPositionColorTexture.VertexElements);

Ich wollte jetzt sogenanntes Shader Instancing anwenden. Das ist eine Vervielfältigung von Objekten durch die GPU mit Hilfe eines Shaders auf dem PC und in der Xbox. (im Gegensatz zu Hardware Instancing – geht nur bei windows und VFetch Instancing – funktioniert nur auf der Xbox).
Für die Übermittlung der Vertexdaten an den neuen Shader wurde jetzt eine eigene Struktur benötigt, die ich „VertexPositionTextureInstancing“ nannte.
Die neue Zuweisung der Struktur sollte dann wie folgt aussehen:

vertexDeclaration = new VertexDeclaration(
this.GraphicsDevice, VertexPositionTextureInstancing.VertexElements);

Leider habe ich dabei irgendwie die falsche Anweisung auskommentiert.
Es wurden dann zwar texturierte Körper und/oder Flächen angezeigt, aber absolut nicht das, was ich wollte.
Da ja kein Fehler angezeigt wird, weil die falsche Struktur ja existiert und der Shader ja immer irgendwelche Daten findet habe ich den Fehler ziemlich lange gesucht.
Ich hoffe, ich kann hiermit jemanden noch längeres Suchen ersparen.

Dieser Beitrag wurde unter XNA Programmierung abgelegt und mit , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar