今天就带这个大家把OpenGL 用原始的方法创建一下,之后我们会使用苹果给我封装的类做,简化操作!
学习目标
创建一个OpenGL 工程,用黄色渲染视图
实现步骤
1.创建工程(一个普通的工程就行)
2.创建一个视图(继承UIView)
3.设置这个视图的Layer层为CAEAGLLayer 类型
4.创建一个管理OpenGL的上下文,并设置为当前上下文
5.创建渲染缓冲区
6.创建帧缓冲区
7.将渲染缓冲区关联到帧缓冲区中去
8.将渲染缓冲区绑定到目标layer层上去
9.用指定的颜色清除渲染缓冲区
10.将渲染缓冲区显示出来
开始了
- 第一步 创建一个工程
- 第二步 创建一个视图继承UIView(OpenGLView)
- 第三步 设置OpenGLView 的layer层为CAEAGLLayer
+(Class)layerClass{
return [CAEAGLLayer class];
}
- 第四步 创建一个管理上下文
context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
[EAGLContext setCurrentContext:context]; // 设置其为当前OpenGL 渲染的管理上下文
- 第五步 创建渲染缓冲区
glGenRenderbuffers(1, &colorRenderBuffer);
glBindRenderbuffer(GL_RENDERBUFFER, colorRenderBuffer);
- 第六步 创建帧缓冲区
glGenFramebuffers(1, &framebuffer);
glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);
- 第七步 将帧缓冲区和颜色缓冲区进行关联
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, colorRenderBuffer);
//检测帧缓冲区有没有创建成功
if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) {
NSLog(@"Failed to make complete framebuffer object %x", glCheckFramebufferStatus(GL_FRAMEBUFFER));
}
- 第八步 OpenGL ES渲染缓存对象绑定到layer上
[context renderbufferStorage:GL_RENDERBUFFER fromDrawable:(CAEAGLLayer*)self.layer];
- 第九步 清除缓冲区
glClearColor(1, 1, 0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
- 第十步 将渲染缓冲区呈现出来
[context presentRenderbuffer:GL_RENDERBUFFER];
运行结果:
总结
完成上面的步骤,如果你运行成功的话,你已经完成了入门工作,这个是最底层的代码了,后面的教程,我们不在使用这种方式写代码,苹果公司给我们提供了更好的方式,下节继续。
代码在这里