OpenGL名詞熟悉
一:著色器.函數(shù)/方法(代碼段)->CPU來使用.shader(代碼段)->GPU
二:固定著色器:蘋果提供Api(代碼段)->調用(參數(shù))OpenGL來提供
三:自定義著色器.自己基于GLSL語法來進行編寫代碼段
四:頂點著色器:用來處理頂點相關代碼.1確定位置.2.縮放/平移/旋轉.3手機端顯示3D效果.
手機屏幕實際是2D.我們將3D轉換成2D(投影換算)
五.片元著色器/像素著色器:片元(像素)處理一個個像素點.eg:120*120像素點.處理14400次.針對GPU來說不算多.因為GPU是并行運算的.
拓展一下:圖片進行飽和度調整.實際就是給每一個片元點修改對應的色值
六.GLSL:自定義著色器.代碼OpenGL標準調用GPU來計算
七.光柵化:2個過程(不可編程).第一個是確定圖形像素范圍.第二個過程:顏色附著上去
八.紋理:壓縮圖片->位圖OpenGL.tga紋理文件.在移動端顯示一張png/jpg均是轉換成位圖以后進行展示
九.混合:Layer.多個圖層疊加.疊加部分會重新計算.如果有透明度.那么就會產(chǎn)生離屏渲染
十.變換矩陣:線性代數(shù).就是旋轉/平移/縮放
十一.投影矩陣:就是將3D投影到2D設備上
投影方式:
A.正投影(平行投影):不管遠近.都是1:1.camera不是相機是觀察者.用戶顯示2D效果.不是針對3D透視
B透視投影.遠小近大.針對3D透視
OpenGL攝像機坐標系.就是觀察者坐標系.從哪個角度觀察.就會呈現(xiàn)不一樣的視圖
OpenGL著色器相關

OpenGL圖元連接相關

OpenGL紋理學習
紋理是一種圖形數(shù)據(jù).主要用于在屏幕中給OpenGL顯示物體貼上圖形數(shù)據(jù).就像裝修時家里的墻上貼墻紙
紋理常用的API主要有三個
a.分配紋理對象
//參數(shù)1.待使用的紋理個數(shù)
//參數(shù)2.待使用的紋理數(shù)組
GLAPI void GLAPIENTRY glGenTextures (GLsizei n, GLuint *textures);
b.讀取紋理.
//參數(shù)1.紋理文件名稱
//參數(shù)2.紋理的寬變量地址
//參數(shù)3.紋理的高變量地址
//參數(shù)4.組件格式變量地址(獲取紋理單元存儲的顏色成分)
//參數(shù)5.文件格式變量地址
//返回值GLbyte *:指向圖像數(shù)據(jù)的指針
GLbyte *gltReadTGABits(const char *szFileName, GLint *iWidth, GLint *iHeight, GLint *iComponents, GLenum *eFormat, GLbyte *pData = NULL);
c.載入紋理
//參數(shù)1.紋理維度.GL_TEXTURE_1D,GL_TEXTURE_2D,GL_TEXTURE_3D
//參數(shù)2.mip貼圖層次.一般使用0
//參數(shù)3.紋理單元存儲的顏色成分.
//參數(shù)4.紋理的寬度
//參數(shù)5.紋理的高度
//參數(shù)6.紋理的深度.一般使用0
//參數(shù)7.像素數(shù)據(jù)的數(shù)據(jù)類型.GL_UNSIGNED_BYTE無符號整型
//參數(shù)8.指向紋理圖像數(shù)據(jù)的指針
GLAPI void GLAPIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
d.綁定紋理
//參數(shù)1.紋理維度GL_TEXTURE_1D,GL_TEXTURE_2D,GL_TEXTURE_3D
//參數(shù)2.需要綁定的紋理
GLAPI void GLAPIENTRY glBindTexture (GLenum target, GLuint texture);
一般我們在綁定紋理時會設置紋理參數(shù).包含:
1.過濾方式:常用的有臨近過濾(GL_NEAREST).線性過濾(GL_LINEAR).效果如下:

過濾方式還有Mip貼圖紋理過濾

2.環(huán)繞方式:即當紋理不滿足填充空間時.需要使用什么樣的環(huán)繞方式填充

紋理設置方式:
//參數(shù)1.紋理緯度
//參數(shù)2.紋理設置類型
//參數(shù)3.類型對象的效果
GLAPI void GLAPIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param);
//紋理放大時.使用線性過濾
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
//紋理縮小時.使用臨近過濾
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
//x軸使用重復環(huán)繞
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
//y軸使用拉伸填充環(huán)繞
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
OpenGL紋理映射方式:

這里值得注意的是.在OpenGL中.每個單元都是一個三角形.即便是四邊形也是2個三角形組裝起來.所以對于繪制四邊形.可以讓共用的對角點寫在中間.這樣就能實現(xiàn)兩點共用.繪制出四邊形