2016-04-21 15 views
0

Ich habe mehrere Level of Detail-Techniken implementiert, um einen Vergleich zwischen ihnen zu machen. Da zwei von ihnen Tessellation verwenden, würde ich gerne wissen, wie viele Dreiecke das fertige gerenderte Mesh hat. Ich habe jemanden gefunden, der eine Funktion dafür geschaffen hat, aber es hat nur funktioniert, wenn die Tessellationsfaktoren konstant waren und alle gleich waren. Da meine Implementierung die Faktoren im Hull Shader basierend auf der Entfernung von der Kamera bestimmt, funktioniert seine Lösung nicht für mich.Anzahl der Dreiecke nach Tessellation

Es würde mir scheinen, wenn ich wüsste, wie oft der Domain-Shader ausgeführt wurde, dann würde ich wissen, wie viele Dreiecke ich habe? Gibt es eine Möglichkeit, das zu zählen? Oder gibt es einen anderen Weg?

(ich benutze DirectX, aber ich denke, das Verfahren etwa gleich für OpenGL würde, weshalb ich beide als Tags haben)

+0

Ich glaube nicht, dass Sie die Anzahl der Vertices zählen können, ein Zeichenbefehl, der eine Tesselation beinhaltet Shader wird erstellt, ohne den Shader auszuführen und die Zeichenbefehle auszuführen. –

+0

Aber ich benutze den Shader und erhalte den Zeichenbefehl, wie kann ich dann die Nummer bekommen? –

Antwort

0

Ich löste es eine ID3D11Query des Typs D3D11_QUERY_PIPELINE_STATISTICS verwenden. Die Struktur D3D11_QUERY_DATA_PIPELINE_STATISTICS wird für das Ergebnis verwendet und es enthält eine Menge nützlicher Informationen wie die Anzahl der gerenderten Primitiven und Aufrufe der Shader etc.

Verwandte Themen