cocos2d-x之OpenGL概述
概述
cocos2d-x底層實現依賴OpenGL,這是一個圖形庫,可以操作顯示卡,因此,在處理比較複雜的遊戲,消耗較大的遊戲時,處理的效率會很高。而像android自帶的canvas工具,就不能提供這種效率,因為它不是直接操作顯示卡的。當然,android自帶的一些畫圖工具,可以做一些簡單的遊戲開發,如下棋,貪食蛇,連連看等。
OpenGL1.0是固定管線的,內建functions設定所有渲染狀態:燈光,頂點,顏色,攝像機。
OpenGL2.0是針對可程式設計管線的,需要手動設定著色器(shader)。shader包括vertexShader和textureShader,可以處理頂點和紋理的數值,這樣,在顯示卡將要顯示前,就可以對物件的座標和顏色進行修改,輕易地實現很多特效:如波紋。可以通過shader對燈光、陰影的細節進行處理,而1.0是無法對這些細節進行處理的。
cocos2d-x使用的OpenGL技術,大概就如下面所述,因為是2d圖形引擎,所以,比較少用到3D的OpenGL API,因此,本文算是粗略涵蓋了cocos2d-x涉及到OpenGL的內容。
cocos2d-x也使用了DirectX庫,其實和OpenGL的渲染流程,原理是一樣的,只是API的命名方式不同。因此,可以從OpenGL中借鑑設計原理。
使用流程
1.準備view,如android中的MySurfaceView
2.建立OpenGl context
3.建立render buffer
是OpenGL物件,用於存放渲染過的影像。螢幕區域這麼大的尺寸作為約束。
4.建立frame buffer
是OpenGL物件,存放幀,它包含了render buffer . depth buffer , stencil buffer 和 accumulation buffer
深度緩衝區depth buffer:3D渲染時候,受到Z軸影響,會有遮擋現象,需要儲存深度資訊進行深度比較,以保證遮擋關係正確。
渲染流程
編寫著色器——shader程式
這兩個著色器,是在執行的時候才編譯,而且是通過OpenGL庫來編譯的。因為OpenGL是跨平臺的,進行執行時編譯,比較適合,這樣可以把編譯出來的程式碼相容到不同的平臺。
OpenGL系統函式
投影矩陣
模型檢視矩陣
紋理資料
OpenGL的文字顯示
相關文章
- OpenGL概述
- Android API開發之OpenGL開發之Android OpenGL STL詳解AndroidAPI
- 淺談OpenGL之DSA
- Opengl ES之踩坑記
- OpenGL 之 GPUImage 原始碼分析GPUUI原始碼
- Opengl ES之YUV資料渲染
- OpenGL/OpenGL ES 初探
- OpenGL 與 OpenGL ES
- OpenGL 之 幀緩衝 使用實踐
- Qt入門之概述QT
- Scrum 之 Sprint Backlog 概述Scrum
- ACE之(一)ACE概述
- 第三個OpenGL程式,shaders _ 後續 之 uniformORM
- 設計模式之概述篇設計模式
- [java IO流]之 IO概述Java
- JavaScript 複習之DOM 概述JavaScript
- OpenGL Shader例項,OpenGL 粒子系統
- OpenGL系列教程之一:OpenGL(轉)
- OpenGL 學習 01 Mac 搭建 OpenGL 環境Mac
- netty系列之:netty架構概述Netty架構
- Flutter系列之Dart語言概述FlutterDart
- Boltdb學習筆記之〇--概述筆記
- kubernetes實踐之十九:API概述API
- OpenGL入門(1)——建立一個OpenGL專案
- [OpenGL]VS2010配置OpenGL開發環境開發環境
- Cocos2d-x環境配置步驟
- OpenGL 安裝!
- Java基礎知識之概述(一)Java
- 系列之TCP/IP協議-概述(001)TCP協議
- OpenGL/OpenGL ES入門:紋理初探 - 常用API解析API
- 學習OpenGL ES之繪製三角形
- 跟我一起學Redis之Redis概述Redis
- Docker小白到實戰之開篇概述Docker
- JavaSE、JavaEE、JavaME之間的區別概述Java
- Spring系列之AOP基本主要類概述Spring
- QCustomPlot開啟opengl
- GPU OpenGL 管線GPU
- OpenGL基本概念