gpt4 book ai didi

ios - 结合 Cocos2d 和 GLKView 渲染相同的数据

转载 作者:行者123 更新时间:2023-11-29 01:10:12 25 4
gpt4 key购买 nike

我使用 cocos2d 引擎将一些动画渲染到 CCGLView,CCGLView 放置在应用程序主窗口上,靠近常规 UIView。我的应用程序使用外部屏幕,我想在该屏幕上呈现与 CCGLView 中完全相同的内容,但没有任何其他 View 。而且我需要以高效的方式执行此操作,因此无法截取 CCGLView 的屏幕截图。

据我所知,使用 cocos2d 没有这样的选项,因为它支持一次只呈现一个场景(CCDirector 一次只更新一个 CCGLView)。

所以我的问题是:

是否可以使用 GLKView 实现这个目标?我可以从 CCGLView 访问帧缓冲区对象,并且可以从缓冲区读取像素。我认为最好的选择是使用 cocos2d runloop 并在常规 cocos2d 渲染之后执行此操作。不幸的是,我对 openGLES 了解不多,也不知道如何实现。 cocos2d 使用 openGLES 2.0。

编辑:

目前唯一的建议来自@s1ddok(感谢),想法是使用 CCRenderTexture 绘制到放置在主窗口上的 CCGLView 中,并使用 CCRenderTexture 的数据渲染到外部窗口。但我仍然不明白如何第二次渲染纹理 - 这次是另一个 View 。使用另一个 CCGLView 需要将此 View 配置为 CCDirector 的目标,我该怎么做?此外,第二个 CCGLView 将与第一个共享 EAGLContext ... 那么如何强制 cocos2d 渲染到第二个 CCGLView?感谢您的帮助!

最佳答案

我想您可以采用的最佳方式是 CCRenderTexture。将整个场景渲染到它上面,然后在外部屏幕上显示数据。

这是多种用途的常见做法,例如,如果您需要将着色器应用于整个场景或其他内容。

这实际上将允许您每帧只渲染一次场景,然后将相同的数据用于 UIKit 和外部屏幕。

关于ios - 结合 Cocos2d 和 GLKView 渲染相同的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35846750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com