上一篇我們學(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è)置好緩存

Android培訓(xùn),安卓培訓(xùn),手機(jī)開(kāi)發(fā)培訓(xùn),移動(dòng)開(kāi)發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

 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
        
		

網(wǎng)友評(píng)論