今天就帶這個大家把OpenGL 用原始的方法創(chuàng)建一下,之后我們會使用蘋果給我封裝的類做,簡化操作!
學習目標
創(chuàng)建一個OpenGL 工程,用黃色渲染視圖
實現(xiàn)步驟
1.創(chuàng)建工程(一個普通的工程就行)
2.創(chuàng)建一個視圖(繼承UIView)
3.設置這個視圖的Layer層為CAEAGLLayer 類型
4.創(chuàng)建一個管理OpenGL的上下文,并設置為當前上下文
5.創(chuàng)建渲染緩沖區(qū)
6.創(chuàng)建幀緩沖區(qū)
7.將渲染緩沖區(qū)關聯(lián)到幀緩沖區(qū)中去
8.將渲染緩沖區(qū)綁定到目標layer層上去
9.用指定的顏色清除渲染緩沖區(qū)
10.將渲染緩沖區(qū)顯示出來
開始了
- 第一步 創(chuàng)建一個工程
- 第二步 創(chuàng)建一個視圖繼承UIView(OpenGLView)
- 第三步 設置OpenGLView 的layer層為CAEAGLLayer
+(Class)layerClass{
return [CAEAGLLayer class];
}
- 第四步 創(chuàng)建一個管理上下文
context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
[EAGLContext setCurrentContext:context]; // 設置其為當前OpenGL 渲染的管理上下文
- 第五步 創(chuàng)建渲染緩沖區(qū)
glGenRenderbuffers(1, &colorRenderBuffer);
glBindRenderbuffer(GL_RENDERBUFFER, colorRenderBuffer);
- 第六步 創(chuàng)建幀緩沖區(qū)
glGenFramebuffers(1, &framebuffer);
glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);
- 第七步 將幀緩沖區(qū)和顏色緩沖區(qū)進行關聯(lián)
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, colorRenderBuffer);
//檢測幀緩沖區(qū)有沒有創(chuàng)建成功
if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) {
NSLog(@"Failed to make complete framebuffer object %x", glCheckFramebufferStatus(GL_FRAMEBUFFER));
}
- 第八步 OpenGL ES渲染緩存對象綁定到layer上
[context renderbufferStorage:GL_RENDERBUFFER fromDrawable:(CAEAGLLayer*)self.layer];
- 第九步 清除緩沖區(qū)
glClearColor(1, 1, 0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
- 第十步 將渲染緩沖區(qū)呈現(xiàn)出來
[context presentRenderbuffer:GL_RENDERBUFFER];
運行結果:
總結
完成上面的步驟,如果你運行成功的話,你已經(jīng)完成了入門工作,這個是最底層的代碼了,后面的教程,我們不在使用這種方式寫代碼,蘋果公司給我們提供了更好的方式,下節(jié)繼續(xù)。
代碼在這里