iOS中 openGL常用函数记录(部分)
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
注:這行代碼是用于清楚屏幕。GL_DEPTH_BUFFER_BIT 清除深度緩沖
glVertexPointer(3, GL_FLOAT, 0, triangleVertices);
注:此函數告訴OpenGL的情況下我們的數據是什么格式,它是有4個參數,這個功能是很簡單細分:Size-3這個值表示了每個坐標有幾個數字;Data Type- GL_FLOAT 意味著我們用float點值;Stride -??這個stride告訴OpenGL 在每個坐標之間忽略哪幾個點;Pointer to the Data – 數據本身,正是因為它,三角形才會出現。
glEnableClientState(GL_VERTEX_ARRAY);
注:OpenGL是一個狀態機。 這意味著你打開和關閉功能的要求就是啟用和禁用命令。之前,我們使用過glEnable(),這影響到OpenGL的服務。 glEnableClientState ()開啟頂點數據,GL_COLOR_ARRAY顏色,GL_TEXTURE_COORD_ARRAY 紋理
glTexCoordPointer(2, GL_SHORT, 0, squareTextureCoords);
注:告訴OpenGL我們的紋理坐標數組是在哪里存儲并且格式是什么
glDisableClientState(GL_COLOR_ARRAY);
注:關閉顏色渲染
glDrawArrays(GL_TRIANGLES, 0, 3);
注:OpenGL繪制開始執行,Drawing Method-繪制方式: First Vertex- Vertex Count-頂點數量
glMatrixMode(GL_MODELVIEW);
注:glMatrixMode 告訴OpenGL,我們工作在頂點模式下,而不是投影
glLoadIdentity();
注:覆蓋(重置)函數,它只是基本重置所有的條件(重置所有狀態)
glTranslatef(GLfloat xtrans, GLfloat ytrans, GLfloat Ztrans);
注:glTranslatef(-1.5, 0.0, -6.0); X、Y、Z 3個方向上的平移
glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
注:旋轉,例:glRotatef(45.0, 0.0, 0.0, 1.0),繞Z軸旋轉45度
glColor4f(GLfloat red,GLfloat green,?GLfloat blue,GLfloat alpha);
注:?glColor4f(0.0, 0.0, 0.8, 1.0);glColor4f()告訴OpenGL開始使用藍色這個顏色來繪制(填充)。
red,green,blue這三個參數是顏色的浮點值,0.0表示沒有強度,1.0表示全強度。
??????
glColorPointer(4, GL_FLOAT, 0, squareColours);
注:Size-數組中顏色的數目,Data Format-我們在這里使用GL_FLOAT,Stride-再次,這里告訴OpenGL在兩個值之間跳多少個數字。
Arry Points-這里是數據存儲的地方。
glShadeModel(GL_FLAT);
注:著色模型:GL_FLAT&GL_SMOOTH。GL_SMOOTH是一個平滑著色,這就意味著當你開始填充一個矩形的時候,OpenGL將使用在我們 squareColours[] 數組里的默認顏色去定義在 squareVertices[] 數組里的每個頂點。 使用插值中每個像素的面積之間的點,順利改變顏色之間的四點。換句話說,這將是我們出現彩色的矩形; GL_FLAT是使用物體的的最后一個頂點的顏色去填充整個圖元
glGenTextures(1, &textures[0]);
注:GLuint textures[1];復制這個紋理數據到OpenGL引擎,所以我們要告訴OpenGL為它開辟內存空間
glBindTexture(GL_TEXTURE_2D, textures[0]);
注:激活綁定我們生成的紋理:
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, texWidth, texHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, textureData);
注:發送紋理數據(textureData 的指針)到OpenGL
- target – 基本上,通常是 GL_TEXTURE_2D
- level – 規定紋理的詳細程度。0表示允許圖片的全部細節。高數字表示n級別mipmap圖片細節。(這邊不懂,請知道的朋友告訴我下。)
- internal_format – 這個 internal format 和 format 必須是相同的。這兩個都是 GL_RGBA .?width - width of the image
- height - height of the image?border – 必須始終設置為0 , OpenGL ES 不支持紋理邊界.
- format – 必須和 internal_format相同。
- type – 每個像素的類型。想起來沒,每個像素為四個字節。因此每個像素占用1個無符號整型(4字節)
- pixels – 實際上的圖片數據指針。
free(textureData);
注:釋放
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glEnable(GL_TEXTURE_2D);
注:告訴OpenGL,在放大的(近距離 - GL_TEXTURE_MAG_FILTER) 及縮小的(遠距離 - GL_TEXTURE_MIN_FILTER). 時候如何處理,
glPushMatrix(); glPopMatrix();
注:告訴OpenGL 將我們的矩陣變換放到堆棧中,2個函數配合使用
glEnable(GL_BLEND); glDisable()
注:開啟 GL_BLEND 混合色,半透明。GL_DEPTH_TEST 深度測試。GL_CULL_FACE 面剔除
glBlendFunc(GL_ONE, GL_ONE);
注: glEnable打開混合。光混合不夠的,默認狀態下,不會做任何事情。glBlendFunc 告訴OpenGL混合是如何工作的。
轉載于:https://www.cnblogs.com/yuxiuyi/p/10273306.html
總結
以上是生活随笔為你收集整理的iOS中 openGL常用函数记录(部分)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算法提高 合并石子【动态规划】
- 下一篇: Java中string.equalsIg