前言:
本文主要是记录自己学习OpenGLES的一些过程,如果有幸能帮助到看到本文的读者,那就更好了
概念:
OpenGLES 1.X: 固定管道编程
OpenGLES 2.0:可编程3D图形管道,可以创建着色器和程序对象,并且能够在OpenGL ES着色语言中编写顶点和片段着色器
OpenGLES 3.0:拓展了2.0,对渲染管线的多重增强,大幅增强纹理功能等
详情有兴趣的可以去官网查看(访问速度很慢)
环境
Xcode8.3+OpenGLES2.0
正文
1、 创建上下文
//init context
_eaglContext =[[EAGLContext alloc]initWithAPI:kEAGLRenderingAPIOpenGLES2];
[EAGLContext setCurrentContext:_eaglContext];
//init layer
_layer =[[JFCAEGLayer alloc]initWithFrame:CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height)];
[self.view.layer addSublayer:_layer];
2、绑定帧缓存和渲染缓存对象
渲染缓存:存储绘制结果的缓冲区
帧缓存:接收渲染结果的缓冲区,为GPU指定存储渲染结果的区域。
glGenRenderbuffers(1,&_colorRenderBuffer);
glBindRenderbuffer(GL_RENDERBUFFER,_colorRenderBuffer);
[_eaglContext renderbufferStorage:GL_RENDERBUFFER fromDrawable:_layer];
glGenFramebuffers(1,&_frameBuffer);
glBindFramebuffer(GL_FRAMEBUFFER,_frameBuffer);
//绑定渲染缓冲区到帧缓冲区
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0
, GL_RENDERBUFFER, _frameBuffer);
3、清屏渲染
glClearColor(0.5f, 0.5f, 0.5f, 1.0f);
//GL_COLOR_BUFFER_BIT: 当前可写的颜色缓冲
//GL_DEPTH_BUFFER_BIT: 深度缓冲
//GL_ACCUM_BUFFER_BIT: 累积缓冲
//GL_STENCIL_BUFFER_BIT: 模板缓冲
glClear(GL_COLOR_BUFFER_BIT);
[_eaglContext presentRenderbuffer:GL_RENDERBUFFER];
实现效果如下:
具体代码已上传到github,详情请见OpenGLES
推荐一个学习OpenGL的教程
如果想学习更详细的OpenGLES的知识,推荐落影loyinglin和酷走天涯