根据Apple 的 OpenGL ES Programming Guide,“如果 [a] 帧缓冲区旨在显示给用户,请使用特殊的 Core Animation-aware 渲染缓冲区。”
文本继续说,要让这个 Core Animation 感知渲染缓冲区,需要使用以下代码“子类 UIView 为 [the] iOS 应用程序 [and] Override the layerClass”创建一个 OpenGL ES 视图:
+ (Class) layerClass
{
return [CAEAGLLayer class];
}
但是,如果查看向最终用户显示 OpenGL 的Apple GLCameraRipple 示例,layerClass 似乎永远不会被覆盖。对 layerClass 或 CAEAGLLayer 的文本搜索显示它们丢失了。
如果您寻找其他直接向用户显示的方法,Apple 提供了另外两种 OpenGL 方法,但两者似乎都暗示它们不是用于直接向用户显示,而是用于离屏渲染。(即“如果帧缓冲区用于执行屏幕外图像处理,则附加渲染缓冲区。如果将帧缓冲区图像用作稍后渲染步骤的输入,则附加纹理。”)
除了使用支持 Core Animation 的渲染缓冲区之外,还有另一种显示 OpenGL 内容的方法 - 或者 Apple 是否以某种方式覆盖了图层类,因此 OpenGL 内容以另一种方式成为 Core Animation 感知?