opengles2的多窗口支持

时间:2013-12-18 10:42:26

标签: opengl-es opengl-es-2.0 multi-window

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

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

1 个答案:

答案 0 :(得分:0)

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

另一种方法是使用单个视图,只需使用glViewport绘制到不同的部分。在这种情况下,您需要为特定部分设置glViewport,设置orthofrustum(如果视图片段的大小不同),那就是它。例如,如果您将具有维度bWidthbHeight的缓冲区拆分为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

当你完成所有想要更新的内容时,只显示帧缓冲区。