iOS OpenGL renderbufferStorage:fromDrawable 方法详解

来源:互联网 发布:js多个异步请求结果 编辑:程序博客网 时间:2024/05/24 04:09

iOS OpenGL renderbufferStorage:fromDrawable 方法详解

iOSOpenGL的渲染流程之前已经介绍过此处不再介绍。

点击参考OpenGL iOS端渲染流程

renderbufferStorage:fromDrawable:

作用:将可绘制对象的存储绑定到OpenGL ES renderbuffer对象。

Declaration

- (BOOL)renderbufferStorage:(NSUInteger)target 

               fromDrawable:(id<EAGLDrawable>)drawable;

Parameters

target OpenGL ES绑定点用于当前绑定的renderbuffer。该参数的值必须是GL_RENDERBUFFER(或者GL_RENDERBUFFER_OESOpenGL ES 1.1上下文中)。

drawable 管理renderbuffer的数据存储的对象。在iOS中,此参数的值必须是一个 CAEAGLLayer 对象。

Return Value YES if successful; otherwise, NO.

函数的内部实现流程

为了创建一个可以呈现给屏幕的renderbuffer,您可以绑定renderbuffer,然后通过调用此方法为其分配共享存储空间。此方法调用是为了替换正常情况下的glRenderbufferStorage方法(对于非iOS平台的其他平台)。其存储已分配了此方法的renderbuffer可以随后通过调用glRenderbufferStorage函数来显示数据。

一个通过renderbufferStorage:fromDrawable 方法来分配存储空间的renderbuffer可以在之后通过调用 presentRenderbuffer:来显示renderbuffer的内容。 

宽度,高度和内部颜色缓冲区格式是从CAEAGLLayer对象的属性中导出的。在调用此方法之前,可以通过在可绘制对象的drawableProperties字典中添加一个kEAGLDrawablePropertyColorFormat键来覆盖内部颜色缓冲区格式。

要使OpenGL ES renderbufferCAEAGLLayer对象分离,请将drawable参数设置为nil即可将两者分离。


关于正常情况下的glRenderbufferStorage方法(对于非iOS平台的其他平台)请参考OpenGL glRenderbufferStorage 函数详解

需要注意的是:

iOS 6.0及更高版本中,此方法会自动刷新OpenGL ES的命令缓冲区,这导致了此函数不适合在对性能有较高要求的代码中中重复调用。


原创粉丝点击