Glocke hat geschrieben:Auf jeden Fall frage ich mich nun, "wie" ich eine Szene am performantesten rendern sollte. Bisher war ich von der Verwendung von glBegin und glEnd im Zusammenhang mit glVertex3f usw. ausgegangen.
Das gehört vermutlich zu den langsamsten Vorgängen.
Glocke hat geschrieben:Nach "näherem Googeln" bin ich auf "DisplayList" und "VBO" gestoßen. Nun meine Fragen:
- Wie sollte ich nun rendern, wenn ich auf Geschwindigkeit wert lege?
DisplayListen übernehmen Eingaben in die Grafikkarte. Du kannst danach eine solche Liste aus der Grafikkarte rufen und Dir damit ein Objekt zeichnen lassen. Vertex Buffer Objekts(?) sind - wenn ich das gerade richtig in Erinnerung habe - Array Blocke, wo Du zum Beispiel einen Körper in Form von Dreiecken beschreibst, die in einem Array hintereinander stehen. Statt also pro Dreieck dreimal glVertex3f aufzurufen, sagst Du der Grafikkarte "Schau her, hier sind Dreiecke und zwar so und soviele, zieh's Dir rein."
Glocke hat geschrieben:[*] Sollte ich bezüglich der Objekte meiner Szene unterscheiden, ob sie aktuell überhaupt sichtbar sind, oder erledigt das OpenGL für mich? Immerhin kennt es ja meine "Blickrichtung" (glFrustum etc.). Von der 2D-Programmierung bin ich gewöhnt zu unterscheiden, was sichtbar ist (und gezeichnet werden sollte) und was außerhalb des Sichtbereichs liegt.[/list]
OpenGL ist genauso blöd, wie alles andere auch. Du musst selbst überlegen, welche Objekte Du zeichnen möchtest und welche nicht.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.