前言:
本文主要是記錄自己學習OpenGLES的一些過程祝高,如果有幸能幫助到看到本文的讀者范咨,那就更好了
概念:
OpenGLES 1.X: 固定管道編程
OpenGLES 2.0:可編程3D圖形管道郭计,可以創(chuàng)建著色器和程序對象霞揉,并且能夠在OpenGL ES著色語言中編寫頂點和片段著色器
OpenGLES 3.0:拓展了2.0有额,對渲染管線的多重增強,大幅增強紋理功能等
詳情有興趣的可以去官網查看(訪問速度很慢)
環(huán)境
Xcode8.3+OpenGLES2.0
正文
1、 創(chuàng)建上下文
//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慕蔚、綁定幀緩存和渲染緩存對象
渲染緩存:存儲繪制結果的緩沖區(qū)
幀緩存:接收渲染結果的緩沖區(qū)丐黄,為GPU指定存儲渲染結果的區(qū)域。
glGenRenderbuffers(1,&_colorRenderBuffer);
glBindRenderbuffer(GL_RENDERBUFFER,_colorRenderBuffer);
[_eaglContext renderbufferStorage:GL_RENDERBUFFER fromDrawable:_layer];
glGenFramebuffers(1,&_frameBuffer);
glBindFramebuffer(GL_FRAMEBUFFER,_frameBuffer);
//綁定渲染緩沖區(qū)到幀緩沖區(qū)
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的知識,推薦落影l(fā)oyinglin和酷走天涯