2009-05-24 11 views
1

Ich implementiere Plakate für Vegetation, wo eine Reklametafel natürlich ein einzelnes Quad ist, das aus zwei Dreiecken besteht. Die Vertex-Daten werden in einem Vertex-Puffer gespeichert, aber sollte ich mich mit Indizes befassen? Ich verstehe, dass die Einsparungen bei Dingen wie Terrain im Hinblick auf die an die Grafikkarte geschickten Scheitelpunkte enorm sein können, wenn man Indizes verwendet, aber das Verwenden von Indizes auf Werbetafeln bedeutet, dass ich 4 Scheitelpunkte pro Quadrupel anstelle von 6 habe, da jedes Quad komplett ist getrennt von den anderen.XNA/DirectX: Sollten Sie immer Indizes verwenden?

Und ist es möglich, dass die Verwendung von Indizes tatsächlich die Leistung verringert, weil es ein zusätzliches Maß an Indirektion gibt? Oder ist das überhaupt nicht von Bedeutung?

Ich frage das, weil die Verwendung von Indizes die Angelegenheit etwas komplizierter machen würde und ich bin neugierig zu wissen, ob ich keine zusätzliche Arbeit mache, die die Dinge nur langsamer macht (ob theoretisch oder tatsächlich in der Praxis wahrnehmbar).

Dies ist mit XNA, sollte aber für DirectX gelten.

Antwort

2

Die Verwendung von Indizes spart nicht nur Bandbreite, indem weniger Daten an die Karte gesendet werden, sondern reduziert auch den Arbeitsaufwand des Vertex-Shaders. Die Ergebnisse des Vertex-Shaders können zwischengespeichert werden, wenn ein Index als Schlüssel verwendet wird.

Wenn Sie viel von dieser billboarded Vegetation rendern und Ihren Indexpuffer nicht ändern, denke ich, dass Sie einen kleinen Gewinn sehen sollten.

+0

Nicht nur das, Sie verwendet (muss wahrscheinlich immer noch) müssen Indexpuffer verwenden, um den Post-Transformation-Cache zu aktivieren, was eine gute Sache ist (tm) –

+1

Ich bin verwirrt von Ihrem Kommentar. Als ich schrieb "Die Ergebnisse des Vertex-Shaders können zwischengespeichert werden, wenn es einen Index gibt, der als Schlüssel verwendet werden kann" ging ich davon aus, dass ich mich auf den Post-Transform-Cache bezog. –

1

Wenn es um sehr primitive Gemotery geht, dann wird es keinen Sinn machen, Indizes zu verwenden, ich werde mich in diesem Fall nicht einmal mit der Leistung beschäftigen, selbst die bescheidene HW wird Millionen von Dreiecken pro Sekunde wiedergeben.

Jetzt wissen Sie technisch nicht, wie die HW die Daten intern behandeln wird, es könnte sie trotzdem in Indizes konvertieren, weil das die populärste Form der Geometriedarstellung ist.