如果我們有幾個OpenGL上下文,每個都在其自己的進程中,驅動程序以某種方式虛擬化設備,以便每個程序都認爲它獨佔運行GPU。也就是說,如果一個程序調用glEnable
,另一個程序永遠不會注意到這一點。是否可以在OpenGL中一次保存所有狀態?
這種情況可以通過大量的glGet
調用來保存狀態及其對應狀態,以便在事後恢復狀態。顯然,司機更有效地做到了。但是,在用戶空間中,我們需要跟蹤對狀態所做的更改並選擇性地處理它們。也許這只是我錯過了一些東西,但我認爲這將是很好的,爲了調整Framebuffer的視口,然後只是撤消這些變化,以他們以前的任何狀態。
也許有一種方法可以在單個程序中實現上下文切換效果嗎?
那麼,您只需在同一個程序中使用多個GL上下文,即可將狀態彼此分開。由於此類上下文可以共享實際對象,因此您仍然可以使用相同的數據。 – derhass