如果我们有几个OpenGL上下文,每个都在其自己的进程中,驱动程序以某种方式虚拟化设备,以便每个程序都认为它独占运行GPU。也就是说,如果一个程序调用glEnable
,另一个程序永远不会注意到这一点。是否可以在OpenGL中一次保存所有状态?
这种情况可以通过大量的glGet
调用来保存状态及其对应状态,以便在事后恢复状态。显然,司机更有效地做到了。但是,在用户空间中,我们需要跟踪对状态所做的更改并选择性地处理它们。也许这只是我错过了一些东西,但我认为这将是很好的,为了调整Framebuffer的视口,然后只是撤消这些变化,以他们以前的任何状态。
也许有一种方法可以在单个程序中实现上下文切换效果吗?
那么,您只需在同一个程序中使用多个GL上下文,即可将状态彼此分开。由于此类上下文可以共享实际对象,因此您仍然可以使用相同的数据。 – derhass