使用 Cocos3D,是否可以在用户不知情的情况下在后台截取 3D 模型的屏幕截图?
出于预处理目的和其他用途,我想从各个角度截取 3D 模型的屏幕截图。遵循渲染到纹理功能,我注意到当我的场景不可见时,drawSceneContentWithVisitor:
方法只执行一次,而不是在每个渲染周期执行。 出于显而易见的原因,CC3GLFramebuffer*
不会使用新数据进行更新,因此,我只能截取初始屏幕截图。
谢谢。
在 Cocos3D 中,您可以将 3D 场景渲染到屏幕外的表面。有关如何执行此操作的示例,请参阅 CC3DemoMashUp addTelevision
和 drawSceneContentWithVisitor:
方法。
重要的是,在执行绘图时已建立 3D 绘图环境。执行此操作最安全的地方是在drawSceneContentWithVisitor:
方法中。但是,如果要在其他地方渲染,则需要在渲染前后调用CC3Scene open3DWithVisitor:
和CC3Scene close3DWithVisitor:
方法。有关如何执行此操作的示例,请参阅 CC3Scene processInitializeScene
和 open
方法的实现。
要从多个视点渲染场景,您需要向场景添加多个摄影机,并相应地设置绘图访问者的 camera
属性,以便在渲染之前选择摄影机。了解如何在CC3DemoMashUpScene addTelevision
和drawToTVScreen
方法中完成此操作。drawToTVScreen
方法还演示如何处理清除表面的颜色和深度缓冲区。