Ich habe mir einen OpenGL BSP-Viewer für ein altes Spielformat codiert. Es ist dem Quake 3-Dateiformat sehr ähnlich. Da ich mich für die Entwicklung von Grafik-Engines interessiere, möchte ich mich unter Berücksichtigung der aktuellen Technologie weiterentwickeln. Deshalb wende ich mich an Sie, die Experten zu diesem Thema, um zu erfahren, worauf Sie sich konzentrieren sollen. Ich möchte, dass dies so schnell wie möglich geht und da die alten Dateiformate sehr einfach sind und nur wenige Polygone haben, denke ich, dass dies machbar sein sollte. Hier sind meine Fragen:
Beleuchtung a. Ist es für mich sinnvoll, die Scheitelpunktbeleuchtung zu lernen, oder sollte ich stattdessen nur die Beleuchtung pro Pixel implementieren? b. Ich weiß, dass OpenGL eine Lichtgrenze von 8 hat. Sollte ich realistischerweise nur eines davon für Umgebungslicht und den Restcomputer über Shader verwenden? Wenn nicht, was soll ich tun?
Sortieren / Keulen a. Was ist der am schnellsten verwendete Algorithmus zum Sortieren von zu rendernden Oberflächen? Komplexität ist nicht wirklich ein Problem. Ich möchte lernen, was gerade verwendet wird und wie ich wirklich nur die Dinge rendern kann, die ich sehen kann. Ich habe eine Reihe von Algorithmen gesehen, die wie der Algorithmus des Malers beschrieben wurden, und frage mich, was für BSP-basierte Geometrie am sinnvollsten ist. b. Wenn ich Texturen mit Alpha-Masken habe, wurde mir gesagt, dass das Sortieren in irgendeiner Weise mit diesem Prozess verbunden ist. Wie erlaube ich ihnen, im 3D-Raum korrekt zu rendern?
Grafik-Pipeline a. Soll ich meine Geometriedaten über VBOs senden? Ist dies der heute verwendete Standard? b. Wenn ich eine Reihe von "Regionen" habe, möglicherweise 200-300, sollte ich einen besseren Weg finden, sie an die GPU zu senden, ohne 200-300 Chunks zu senden. Sollte ich sie zu einer kombinieren und jedem eine Referenz zuordnen?
Gibt es noch andere Tipps für BSP-basiertes Rendering und ähnliches?
Wenn ich etwas Falsches gesagt habe, korrigieren Sie mich bitte. Ich bin diese Person, die lieber korrigiert und etwas verlegen wäre als unwissend und ahnungslos.
Vielen Dank für Ihre Zeit. Ich weiß das wirklich zu schätzen.