最近在研究OpenGL和OpenGLES最大的一個感覺是,其實原理都是差不多的.但是呢,每個平臺之間的功能函數(shù)用起來,感覺又是各玩各的.
個人使用的是Version 8.3.2 (8E2002) , 編程語言用OC
翻過好多資料,感覺絕大部分的資料基本上基于MFC編譯工具.Xcode的也有,但是不多,也不精.好多都是好久以前的(關(guān)于GLKit/OpenGLES的)博文了.
網(wǎng)上保存了一個比較好理解的圖形:
比較官方的邏輯圖 :
其實里面主要是頂點著色器和片段著色器的編程操作.這兩個著色器完了之后呢?然后就鏈接到一個程序?qū)ο笊?再對程序?qū)ο筮M行操作,也就是讓程序?qū)ο蟾鶕?jù)著色器的內(nèi)容渲染出具體的圖形對象.
在這里面.卡了我好久的是:
1.頂點數(shù)據(jù)是怎么創(chuàng)建的,怎么加載?修飾符怎么理解?
2.頂點數(shù)據(jù)創(chuàng)建之后怎么設(shè)計既定路線布局的(也就是怎么畫出預(yù)期的圖形)
3.怎么動態(tài)的改變頂點數(shù)據(jù)?比如我想顏色出現(xiàn)漸變.
4.各種緩沖區(qū)怎么用?怎么理解?VBO,VAO,EBO(或者叫IBO)怎么使用體現(xiàn)性能?
沒有一個完整得過程,沒有概念,看書也很難理解,腦補了好久.
關(guān)鍵資料書的例子在Xcode上運行總提示某些庫找不到,話說Xcode能混編C和C++,但是處理這個也耗相當(dāng)長的時間
總結(jié)為什么呢??
原因1: 太扣細節(jié)了,可能有鉆牛角尖的情況.理解太慢
原因2: 每種語言編寫的方式不一樣.兩者之間對于一個新手來說,你很難體會其中的差別.
比如:
純C來寫,可能跨平臺性好.但是細節(jié)相當(dāng)多,相當(dāng)麻煩.
使用Xcode中GLKit來做,步驟相對簡單,但是同時需要一些OpenGL的基礎(chǔ)知識,這些內(nèi)容又需要你從C語言的角度去理解.
原因3: 學(xué)習(xí)的方式不太好,學(xué)習(xí)效率不高.
總之,坑要不斷的爬,下面來感受一下不同吧.