第一步
开始前的配置
创建UIView,修改Layer的返回类型,OpenGL只支持在CAEAGLLyer上绘制
设置Layer,获取Layer,Layer默认是透明的,我们必须将他设置为不透明
设置描绘属性,在这里设置不维持渲染内容以及内容格式为RGBA8
至此,初始化配置完成
第二步
设置上下文
设置OpenGL渲染的API版本
kEAGLRenderingAPIOpenGLES1 = 1,
kEAGLRenderingAPIOpenGLES2 = 2,
kEAGLRenderingAPIOpenGLES3 = 3,
初始化OpenGL的上下文 EAGLContext
设置当前内容的上下文 [EAGLContext setCurrentContext:context];
第三步
创建着色缓冲区
生成着色缓冲区对象名称
glGenRenderbuffers(1, &colorRenderBuffer);
绑定着色缓冲区对象
glBindRenderbuffer(GL_RENDERBUFFER, colorRenderBuffer);
为Color分配存储空间
[context renderbufferStorage:GL_RENDERBUFFER fromDrawable:eaglLayer];
第四步
创建画布大小缓冲区
glGenFramebuffers(1, &frameBuffer);
绑定画布大小缓冲区对象
glBindRenderbuffer(GL_RENDERBUFFER, frameBuffer);
将上面的着色缓冲区装配到GL_COLOR_ATTACHMENT0这个装配点上
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR<ATTACHMENT0, GL_RENDERBUFFER, colorRenderBuffer);
第五步
添加清空缓冲区
由于UIView在进行布局变化后,Layer高度发生了变化,所以我们要销毁原来的Buffer
glDeleteFramebuffer(1, &frameBuffer);
frameBuffer = 0;
glDeleteRenderbuffers(1, &colorBuffer);
colorBuffer = 0;
第六步
描绘
glClearColor(0,1.0,0,1.0);
glClear(GL_COLOR_BUFFER_BIT);
[context presentRenderbuffer:GL_RENDERBUFFER];