OpenGLES入门 1 -- 配置

前言:

本文主要是记录自己学习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];

实现效果如下:


效果图.png

具体代码已上传到github,详情请见OpenGLES
推荐一个学习OpenGL的教程
如果想学习更详细的OpenGLES的知识,推荐落影loyinglin和酷走天涯

你可能感兴趣的:(OpenGLES入门 1 -- 配置)