OpenGL ES 2 的渲染流程 實際繪製環境,流程細化
緩存
操做流程:學習
a. CAEAGLLayer 替換默認的 CALayer,配置繪製屬性;
b. EAGLContext,即 Render Context ,設置成 OpenGL ES 2 API 環境,並使其成爲當前活躍的上下文環境;
c. Frame Buffers / Render Buffer 的建立和使用,以及內容綁定;
d. EAGLContext 綁定渲染的窗口 (on-screen),CAEAGLLayer;code
[注] CAEAGLLayer 繼承於 CALayer, 專門用來渲染 OpenGL 、OpenGL ES 內容的圖層;若是要使用,則要重寫 layerClass 類方法。 在 EAGLContext 綁定 CAEAGLLayer 爲渲染窗口以前,能夠經過修改 drawableProperties 屬性來改變渲染屬性。orm
使用注意:
a. 修改 opaque 屬性爲 YES ( CAEAGLLayer.opaque = YES; );
b. 不要修改 Transform ;
c. 當橫豎屏切換的時候,不要去修改 CAEAGLLayer 的 Transform 而進行 Rotate, 而是要經過 OpenGL / OpenGL ES 來 Rotate 要渲染的內容。對象
[注] EAGLContext 是 管理 OpenGL ES 渲染上下文(包含,信息的狀態、openGL ES 的命令(API)、OpenGL ES 須要繪製的資源)的對象,要使用 OpenGL ES 的 API (命令)就要使該 Context 成爲當前活躍的渲染上下文。blog
初始化數據
這裏主要是考慮是否使用 VBOs ,因爲移動端對效率有所要求,因此通常採用 VBOs 快速緩存;繼承
配置 OpenGL ES Shader
這裏的核心工做是 Shader Code ,即學習 GLSL ES 語言;
iOS 端採用 glsl 後綴的文件來編寫代碼;資源
渲染繪製
這裏要注意的是 清空舊緩存、設置窗口,雖然只是一句代碼的問題,但仍是很重要的;
核心是學習 glDraw* 繪製 API ;form
代碼流程:class
配置渲染環境
a. 重寫 layerClass 類方法
+ (Class)layerClass { return [CAEAGLLayer class]; }