0

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

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

4

1 回答 1

0

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

另一种方法是使用单一视图并简单地glViewport用于绘制不同的部分。在这种情况下,您需要glViewport为特定部分进行设置,设置orthofrustum(如果视图段的大小不同)就是这样。例如,如果您使用具有尺寸的缓冲区将视图拆分bWidthbHeight4 个相等的矩形,并且您想要刷新右上角:

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

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

于 2013-12-18T14:40:04.880 回答