一:新增必須的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...