在上一篇我們學(xué)習(xí)了如何搭建IOS下openGL的開(kāi)發(fā)環(huán)境,接下來(lái)我們來(lái)學(xué)習(xí)如何繪制一個(gè)多邊形。
在2.0之前,es的渲染采用的是固定管線,何為固定管線,就是一套固定的模板流程,局部坐標(biāo)變換 -> 世界坐標(biāo)變換 ->觀察坐標(biāo)變換->背面消除->光照->裁剪->投影->視口計(jì)算->光柵化,程序員只需要調(diào)用固定的api修改一些配置參數(shù)就可以完成整個(gè)渲染流程了。而到了2.0,固定管線改成了可編程管線,我們對(duì)整個(gè)渲染流程可以再編程,沒(méi)有固定的api給你調(diào)用,一切都依靠shader來(lái)完成。那么什么是shader呢:
Shader分為頂點(diǎn)著色器(Vertex Shader)和片段著色器(Fragment Shader)。其中Vertex Shader主要負(fù)責(zé)頂點(diǎn)的幾何關(guān)系等的運(yùn)算,Pixel Shader主要負(fù)責(zé)片源顏色等的計(jì)算。
我們使用的是openGLES2.0。因此必然會(huì)用到shader,shader使用OpenGL著色語(yǔ)言(GLSL―OpenGL Shading Language)編寫(xiě),在這里就不仔細(xì)介紹。
首先,設(shè)置好緩存
GLuint _renderBuffer; GLuint _frameBuffer; glGenRenderbuffers(1, &_renderBuffer); glBindRenderbuffer(GL_RENDERBUFFER, _renderBuffer); [_eaglContext renderbufferStorage:GL_RENDERBUFFER fromDrawable: (id<EAGLDrawable>)self.layer]; glGenFramebuffers(1, &_frameBuffer); glBindFramebuffer(GL_FRAMEBUFFER, _frameBuffer); glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, &n