为什么要使用多个OpenGL上下文

Luc*_*uca 13 opengl

对于渲染,我有一个与窗口关联的当前GL上下文.在应用程序呈现多个场景(例如使用累积或不同视口)的情况下,我认为可以重用相同的上下文.

我的问题是,我为什么要使用多个GL上下文?我在ARB_framebuffer_object扩展规范中读到调用MakeCurrent的代价很高,如果存在ARB_framebuffer_object扩展,我可以在不使用MakeCurrent的情况下在通用缓冲区上呈现.

显然,使用多个GL上下文的唯一原因是避免设置上下文状态(像素存储,传输,点大小,多边形点画......)或者具有可用的多个渲染缓冲区配置(一个上下文有累积,另一个没有).我应该如何决定何时使用替代上下文而不是设置上下文状态?

Mal*_*sen 12

我通常倾向于仅在我必须使用时使用其他上下文,例如渲染到多个GUI窗口.对于其他一切,我使用帧缓冲对象或状态更改.

但是,这样的性能建议并不适用于所有情况.如果有疑问,您应该在自己的硬件上测量自己的应用程序.gDEBugger可能有所帮助,有一个试用版可用.


Gha*_*nPL 7

IIRC,纹理和缓冲对象之类的对象可以在上下文之间共享,因此从技术上讲,您可以在第二个线程中创建第二个上下文并在那里异步加载纹理,而不必担心第一个线程是否正在执行渲染.