OpenGL-States speichern für bessere Performance sinnvoll



  • OpenGL-Calls sind zeitaufwändig. Wenn ich eine allgemeine Klasse für Modelle habe, dann muss ich in der Draw-Methode sicherstellen, dass alle Uniforms richtig sind, die richtigen Texturen geladen sind, der richtige Shader aktiviert ist usw. (diese Sachen meine ich mit States, falls States was anderes heißen sollte).

    Die einfachste Lösung wäre, einfach vor dem Zeichnen alles richtig zu setzen. Es wird aber oft passieren, dass gewisse Dinge nicht geändert werden müssen. Dadurch mache ich sinnlose Calls.

    Ist es sinnvoll, die States in einer Klasse zu speichern, damit ich vor den OpenGL-Calls nachschauen kann, ob sie überhaupt notwendig sind?

    Wenn ja, gibt es eine freie Bibliothek dafür, damit ich mir die Arbeit sparen kann?



  • Meine Lösung dafür ist, dass die Klasse sich eben nicht selbst zeichnet. Die entsprechenden Objekte werden einfach dem Draw-System übergeben. Das sortiert dann entsprechend nach Models, Farben, etc. und haut alles über Instancing in den Shader. Das minimiert OpenGL-Calls enorm.





  • Danke 🙂

    @cooky451: Das wäre die beste Lösung, mir scheint aber auch die aufwändigste.


Log in to reply