上一篇我們學習了如何搭建IOS下openGL的開發(fā)環(huán)境,接下來我們來學習如何繪制一個多邊形。

在2.0之前,es的渲染采用的是固定管線,何為固定管線,就是一套固定的模板流程,局部坐標變換 -> 世界坐標變換 ->觀察坐標變換->背面消除->光照->裁剪->投影->視口計算->光柵化,程序員只需要調(diào)用固定的api修改一些配置參數(shù)就可以完成整個渲染流程了。而到了2.0,固定管線改成了可編程管線,我們對整個渲染流程可以再編程,沒有固定的api給你調(diào)用,一切都依靠shader來完成。那么什么是shader呢:

Shader分為頂點著色器(Vertex Shader)和片段著色器(Fragment Shader)。其中Vertex Shader主要負責頂點的幾何關(guān)系等的運算,Pixel Shader主要負責片源顏色等的計算。

 

我們使用的是openGLES2.0。因此必然會用到shader,shader使用OpenGL著色語言(GLSL―OpenGL Shading Language)編寫,在這里就不仔細介紹。

 

 

首先,設(shè)置好緩存

Android培訓,安卓培訓,手機開發(fā)培訓,移動開發(fā)培訓,云培訓培訓

 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