Wenn wir mehrere OpenGL-Kontexte haben, jeder in seinem eigenen Prozess, virtualisiert der Treiber irgendwie das Gerät, so dass jedes Programm denkt, dass es ausschließlich die GPU betreibt. Das heißt, wenn ein Programm glEnable
aufruft, wird der andere dies nie bemerken.Ist es möglich, den gesamten Status in OpenGL auf einmal zu bewahren?
Dies könnte sonst mit einer Tonne von glGet
Anrufe durchgeführt werden, um den Zustand und seine Gegenstücke zu speichern, um es danach wiederherzustellen. Offensichtlich macht der Fahrer es effizienter. Im Benutzerbereich müssen wir jedoch nachverfolgen, welche Änderungen wir am Zustand vorgenommen haben, und diese selektiv behandeln. Vielleicht fehlt mir nur etwas, aber ich dachte, es wäre schön, Viewport für einen Framebuffer anzupassen und diese Änderungen dann einfach wieder rückgängig zu machen.
Vielleicht gibt es eine Möglichkeit, die Wirkung eines Kontextwechsel noch innerhalb eines einzigen Programms zu erreichen?
Nun, Sie können einfach mehrere GL-Kontexte im selben Programm verwenden, um den Status voneinander zu trennen. Da solche Kontexte die tatsächlichen Objekte gemeinsam nutzen können, können Sie immer noch an denselben Daten arbeiten. – derhass