2016-06-15 21 views
1

Ich arbeite an einer kleinen GIS-App mit OSG, aber ich bin ein ziemlich Neuling damit.Tiefenpuffer und Zeichenreihenfolge in OpenSceneGraph steuern

Da sich die Ansicht nicht viel ändert, habe ich keine Probleme, eine ordentliche FPS-Quote zu halten.

Ich muss mehrere Schichten auf der gleichen Ansicht zeichnen. Ebenen können sich überlappen, aber nicht immer.

Gerade jetzt, in der Lage zu wählen, welche Schicht über den anderen ist, verwende ich die PolygonOffet-Eigenschaften, aber ich mag es nicht. Hier

ist, was ich will, um zu versuchen: -Setzen einen klaren Knoten auf meinem root all die Puffer zu löschen -Setzen einen klaren Knoten auf jede Schicht Knoten nur der Tiefenpuffer zu löschen -find einen Weg zwingen OSG, diese Schicht in einer bestimmten Reihenfolge zu zeichnen

So ist meine Frage: - Ist es möglich? - Wie kann ich die Renderreihenfolge des Knotens meiner Ebene auswählen?

Antwort

1

Sie können Puffer mit Kameras löschen. Z.B. Wenn deine Hauptkamera alles zeichnet und du nur einen Puffer löschen willst, kannst du eine zweite Kamera hinzufügen, die nichts anderes tut als dieselbe renderTargetImplementation, den DepthBuffer anhängen, die GL_DEPTH_BUFFER_BIT clearMask haben und sie nach deiner Hauptkamera rendern lassen.

Für Kameras können Sie eine Renderreihenfolge über setRenderOrder wählen und für Knoten können Sie mit setRenderBin arbeiten.

Wenn Sie die Multiple-Kamera-Lösung verwenden, haben Sie ein Multipass-Rendering, das jedoch teuer werden kann, da Sie in diesem Fall wahrscheinlich jede Ebene mit einer eigenen Kamera zeichnen würden.

Auf einer Nebenbemerkung, was Sie wollen, ist Z-Bekämpfung zu vermeiden, und es gibt mehrere Techniken, dies zu tun. Vielleicht findest du mit diesem Keyword eine Antwort.