Opengl es 对opengles2的多窗口支持

Opengl es 对opengles2的多窗口支持,opengl-es,opengl-es-2.0,multi-window,Opengl Es,Opengl Es 2.0,Multi Window,最近我在我的项目中编写游戏编辑器。我想实现一个具有四个视口的编辑器,如3ds max或其他3D软件 那么,如何使用opengles2在多窗口上渲染上下文呢?通常可以有多个视图,每个视图都有自己的帧缓冲区。在这种情况下,只需在绘制到每个视图之前绑定正确的帧缓冲区。您可能还需要为每个视图设置不同的上下文,并在绘制之前(也在绑定帧缓冲区之前)将其设置为当前。如果您需要多个上下文,那么您需要找到一种在它们之间共享资源的方法 另一种方法是使用单个视图,并简单地使用glViewport绘制不同的零件。在这种

最近我在我的项目中编写游戏编辑器。我想实现一个具有四个视口的编辑器,如3ds max或其他3D软件


那么,如何使用opengles2在多窗口上渲染上下文呢?

通常可以有多个视图,每个视图都有自己的帧缓冲区。在这种情况下,只需在绘制到每个视图之前绑定正确的帧缓冲区。您可能还需要为每个视图设置不同的上下文,并在绘制之前(也在绑定帧缓冲区之前)将其设置为当前。如果您需要多个上下文,那么您需要找到一种在它们之间共享资源的方法

另一种方法是使用单个视图,并简单地使用
glViewport
绘制不同的零件。在这种情况下,您需要为特定零件设置
glViewport
,设置
ortho
trustum
(如果视图段的大小不同),即是如此。例如,如果使用尺寸为
bWidth
bHeight
的缓冲区将视图拆分为4个相等的矩形,并希望刷新右上角:

glViewport(bWidth*.5f, .0f, bWidth*.5f, bWidth*.5f);
glOrthof(.0f, bWidth*.5f, bHeight*.5f, .0f, .1, 1.0); //same for each in this case
//do all the drawing
当你完成所有你想更新的内容后,只需显示帧缓冲区