Frage

Ich implementiere derzeit meinen eigenen Renderer mit dem Z-Puffer-Algorithmus. Sobald ich die erforderlichen Berechnungen durchgeführt habe (lesen Sie: Mein Z-Puffer ist mit den richtigen Werten gefüllt), verwende ich SDL, um die erforderlichen Pixel zu färben. Ich benutze dafür ein HWSurface.

Meine Frage ist, wie kann ich das so schnell wie möglich machen? Damit meine ich die Zeichnung selbst, ich kann Optimierungen in meiner Struktur, meinen Algorithmus, das später tun, aber ich möchte sicher sein, dass die Zeichnung selbst so schnell wie möglich ist.

Da ich eine eigene Implementierung eines Zbuffer habe (und es später andere Algorithmen geben wird), kann ich OpenGL nicht verwenden, also gibt es Alternativen?

Jetzt gehe ich nur alle meine Punkte im Z-Puffer durch und zeichne alle Pixel, die gezeichnet werden müssen, nacheinander (und weil es Z-Puffer ist, muss ich das tun, oder?) Und ich rufe a Drawpixel -Methode. In Bezug auf SDL sperle ich meine Oberfläche, bevor ich den Z-Puffer übergehe, alle Pixel zeichne und danach entsperren. Dies kann nicht schneller gehen, soweit ich weiß.

Irgendwelche Vorschläge?

War es hilfreich?

Lösung

Software-Implementierungen sind unglaublich langsam- dh Warp macht Crysis auf einem i7 Hexacore in einem Zehntel der FPS, die ein 8800GT tut. Sie werden keine Wettbewerbsleistung in einem von Software implementierten Z-Puffer finden.

Ein Z-Puffer ist kein besonders komplexer Algorithmus und es ist ziemlich unwahrscheinlich, dass Sie eine Implementierung finden, die effizienter als eine andere ist. Z-Puffering ist nicht etwas, das Sie während der Rasterisierung tun- es ist etwas, das Sie während des Pixel-Renderings tun. Wenn die Tiefe des neuen Pixels weiter entfernt ist als der aktuell geschriebene Wert, rendern Sie das Pixel nicht weiter, z. B. keine Farbe usw. Sie zeichnen den Z-Puffer oder ähnliches nicht. Es ist nicht wie eine Art, bei der Sie möglicherweise die effizienteste Sortierung für Ihren Algorithmus auswählen- es ist eher wie eine Matrix-Multiplikation, sie sind so ziemlich gleich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top