openGL ES 2 0開發流程

2021-06-27 20:14:02 字數 1393 閱讀 2594

一:新增必須的framework(框架)

opengles.frameworks和quartzcore.framework

二:修改openglview.h

引入opengl的header,建立一些後面會用到的例項變數

caeagllayer* _eagllayer;

eaglcontext* _context;

gluint _colorrenderbuffer;

三:設定layer class為caeagllayer

+ (class)layerclass

想要顯示opengl的內容,需要把它預設的layer設定為乙個特殊的layer。(caeagllayer)。這裡通過直接複寫layerclass的方法。

四:設定layer為不透明(opaque)

- (void)setuplayer

因為預設的話,calayer是透明的。而透明的層對效能負荷很大,特別是opengl的層。(如果可能,盡量都把層設定為不透明。另乙個比較明顯的例子是自定義tableview cell)

五:建立opengl context

-(void)setupcontext

if(![eaglcontext setcurrentcontext:_context]) }

無論你要opengl幫你實現什麼,總需要這個eaglcontext。eaglcontext管理所有通過opengl進行draw的資訊。這個與core graphics context類似。當建立乙個context,要宣告需要哪個version的api。這裡,選擇opengl es 2.0。(容錯處理,如果建立失敗了,我們的程式會退出)

六:建立render buffer(渲染緩衝區)

-(void)setuprenderbuffer

render buffer是opengl的乙個物件,用於存放渲染過的影象。有時候你會發現render buffer會作為乙個color buffer被引用,因為本質上它就是存放用於顯示的顏色。

建立render buffer的三步:

1.呼叫glgenrenderbuffers來建立乙個新的render buffer object。這裡返回乙個唯一的integer來標記render buffer(這裡把這個唯一值賦值到——colorrenderbuffer)。有時候你會發現這個唯一值被用來作為程式內的乙個opengl的名稱。(反正它是唯一的)

2.呼叫glbindrenderbuffer,告訴這個opengl:我在後面引用gl_renderbuffer的地方,其實是想用_colorrenderbuffer。其實就是告訴opengl,我們定義的buffer物件是屬於哪一種opengl物件。

3.最後,為render buffer分配空間。renderbufferstorage

七:建立乙個frame buffer(幀緩衝區)

OpenGL ES 2 0基本概念

1.opengl es 2.0可程式設計管道 上圖黃色部分 vertex shader和fragment shader 為此管道的可程式設計部分。整個管道包含以下兩個規範 1 opengl es 2.0 api specification 2 opengl es shading language s...

OpenGL ES 2 0 學習筆記 四

從零開始學opengl,這裡對學習過程作記錄,包括學習資料,內容,基本知識。學習資料 opengl es 2.0 for android,網路 內容 1 基本概念 frustum 視錐體 focal point 視點或觀察者位置 field of vision 視野 目前看起來只能理解個大概,深入理...

opengles2 0 幀快取物件(FBO

幀快取物件 fbo 主要是用於做渲染到紋理。opengles2.0渲染到紋理的方法有三種 第一,使用glcopyteximage2d或者glcopytexsubimage2d,這兩個函式,複製framebuffer中的 畫素到紋理快取裡面,但這兩個函式效能比較低下,並且要求紋理的尺寸必須小於等於 f...