我使用 cocos2d 引擎向 CCGLView 渲染一些动画,CCGLView 放置在常规 UIView 旁边的应用程序主窗口中。我的应用程序使用外部屏幕,我想在该屏幕上呈现与 CCGLView 中完全相同的内容,但没有任何其他视图。而且我需要以有效的方式执行此操作,因此不能选择 CCGLView 的屏幕截图。
据我了解,使用 cocos2d 没有这样的选项,因为它支持一次只呈现一个场景(CCDirector 一次只更新一个 CCGLView)。
所以我的问题是:
是否可以使用 GLKView 来实现这个目标?我可以从 CCGLView 访问帧缓冲区对象,并且可以从缓冲区中读取像素。我认为最好的选择是使用 cocos2d runloop 并在常规 cocos2d 渲染旁边执行此操作。不幸的是,我对 openGLES 了解不多,也不知道如何实现这一点。cocos2d 使用 openGLES 2.0。
编辑:
目前唯一的建议来自@s1ddok(谢谢),想法是使用 CCRenderTexture 绘制到放置在主窗口上的 CCGLView 并使用 CCRenderTexture 的数据呈现到外部窗口。但我仍然不明白如何第二次渲染纹理 - 这次是另一个视图。使用另一个 CCGLView 需要将此视图配置为 CCDirector 的目标,我该怎么做?此外,第二个 CCGLView 将与第一个共享 EAGLContext... 那么如何强制 cocos2d 渲染到第二个 CCGLView 呢?任何帮助表示赞赏!