OpenGL ES 2 的渲染流程 实际绘制环境,流程细化
操作流程:
- 配置环境:
a. CAEAGLLayer 替换默认的 CALayer,配置绘制属性; b. EAGLContext,即 Render Context ,设置成 OpenGL ES 2 API 环境,并使其成为当前活跃的上下文环境; c. Frame Buffers / Render Buffer 的创建和使用,以及内容绑定; d. EAGLContext 绑定渲染的窗口 (on-screen),CAEAGLLayer;
[注] CAEAGLLayer 继承于 CALayer, 专门用来渲染 OpenGL 、OpenGL ES 内容的图层;如果要使用,则要重写 layerClass 类方法。 在 EAGLContext 绑定 CAEAGLLayer 为渲染窗口之前,可以通过修改 drawableProperties 属性来改变渲染属性。
使用注意: a. 修改 opaque 属性为 YES ( CAEAGLLayer.opaque = YES; ); b. 不要修改 Transform ; c. 当横竖屏切换的时候,不要去修改 CAEAGLLayer 的 Transform 而进行 Rotate, 而是要通过 OpenGL / OpenGL ES 来 Rotate 要渲染的内容。
[注] EAGLContext 是 管理 OpenGL ES 渲染上下文(包含,信息的状态、openGL ES 的命令(API)、OpenGL ES 需要绘制的资源)的对象,要使用 OpenGL ES 的 API (命令)就要使该 Context 成为当前活跃的渲染上下文。
-
初始化数据 这里主要是考虑是否使用 VBOs ,由于移动端对效率有所要求,所以一般采用 VBOs 快速缓存;
-
配置 OpenGL ES Shader 这里的核心工作是 Shader Code ,即学习 GLSL ES 语言; iOS 端采用 glsl 后缀的文件来编写代码;
-
渲染绘制 这里要注意的是 清空旧缓存、设置窗口,虽然只是一句代码的问题,但还是很重要的; 核心是学习 glDraw* 绘制 API ;
代码流程:
-
配置渲染环境
-
配置渲染窗口 [ 继承自 UIView ] a. 重写 layerClass 类方法
+ (Class)layerClass { return [CAEAGLLayer class]; }
-
来源:oschina
链接:https://my.oschina.net/u/4391746/blog/3945510