Wie implementiere ich GPU-basierte dynamische Geometrie-LOD in OpenGL? [geschlossen]


9

Ich versuche, LOD zu implementieren, um die Leistung meines Spiels zu steigern. Ich habe ein sehr schönes Tutorial gefunden .

Das Grundkonzept, das ich zu verstehen glaube, lautet: Ermitteln Sie den Abstand zwischen Kamera und Objekt, prüfen Sie die richtige LOD-Ebene und rendern Sie das Objekt mit der "richtigen Anzahl von Instanzen".

Wie implementiere ich das? Der bereitgestellte Beispielcode ist mir ein Rätsel ...

Einige Fragen:

  1. Ist dies eine gute Methode, um LOD zu implementieren?
  2. Kann mir bitte jemand ausführlich erklären, wie ich es umsetzen muss, mit den Abfragen und so weiter ...
  3. Ich rendere alle meine Objekte mit

    GL11.glDrawElements(GL11.GL_TRIANGLES, model.getRawModel().getVertexCount(),
                        GL11.GL_UNSIGNED_INT, 0);

    Der Beispielcode verwendet GL_POINTS. Kann ich es auch mit implementieren GL_TRIANGLES?


Dies ist eine gute Möglichkeit, LODS für eine große Anzahl von Instanzen zu implementieren (Computes eignen sich auch hervorragend dafür). Haben Sie ein bereits CPU-basiertes LOD-System? Hier wird GL_POINTS nur zum Versenden einer bestimmten Anzahl von GS verwendet, nicht zum tatsächlichen Rendern (Dieser Artikel ist 7 Jahre alt, eine moderne Implementierung würde wahrscheinlich stattdessen Compute-Shader verwenden).
Gan_

Antworten:


0

Ich denke, es hängt davon ab, wie Sie Ihr Rendering bereits eingerichtet haben. Angenommen, Sie verwenden ein Indicie-Array, um Ihre Scheitelpunkte in Ihrem Gelände zu zeichnen, können Sie einfach mehr Indicie-Arrays zum Zeichnen erstellen und mit jedem Array mehr Verts durchlaufen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.