openGL学习笔记(1)——常用方法原型解释
? ? ? ? 1、初始化,設置背景色
? ? ? ? ?void glClear(int mask) ? ?清除緩存
? ? ? ? ?實參含義:GL10.GL_COLOR_BUFFER_BIT 清除顏色緩存
? ? ? ? ? ? ? ? ? ? ? ?GL10.GL_DEPTH_BUFFER_BIT ?清除深度緩存
? ? ? ? ?希望同時清除多個緩存,將實參用或(|)連接即可
? ? ? ? ?void glClearColor(float red,float green,float blue,float alpha) ? ?設置背景色
?
? ? ? ?2、視點變換
? ? ? ? 視點變換設置視點的位置和方向。視點默認位于坐標系原點,指向負z軸。
?
? ? ? ?3、模型變換(幾何變換)
? ? ? ? 模型變換在世界坐標系進行,物體模型原點默認在坐標系中心。有三個變換
? ? ? ? 平移
? ? ? ? void glTranslatef(float x,float y,float z)
? ? ? ? 實參為沿著x,y,z軸向右平移的距離
? ? ? ? 旋轉
? ? ? ? void glRotatef(float angle,float x,float y,float z)
? ? ? ? 以原點和點(x,y,z)構成的直線為軸,逆時針旋轉angle大小的角度
? ? ? ? 縮放
? ? ? ? void glScalef(float x,float y,float z)
? ? ? ? 實參為三軸上的縮放因子
?
? ? ? ?4、投影變換
? ? ? ? 投影變換的目的是創建一個視景體,把視景體之外的場景裁剪掉。投影變換有兩種,透視投影(perspective projection)和正交投影(orthographic projection)。
? ? ? ? 透視投影
? ? ? ? void?glFrustumf(float left, float right, float bottom, float top, float zNear, float zFar)
? ? ? ? 正交投影
? ? ? ? void glOrthof(float left, float right, float bottom, float top, float zNear, float zFar)
?
? ? ? ?5、視口變換
? ? ? ? 視口平面是視景體內的物體投影到的二維平面,視口變換就是調整視口大小。
? ? ? ? void glViewport(int x,int y,int width,int height)
? ? ? ? 變換后的視口是以坐標(x,y)為左下頂點,寬為width,高為height的矩形
? ? ? ?6、裁剪變換
? ? ? ?7、矩陣棧操作
? ? ? ? openGL的變換矩陣為4*4矩陣
? ? ? ? 設置當前矩陣
? ? ? ? void glLoadMatrixf(float[] m,int offset) 或者 void glLoadMatrixf(FloatBuffer m) ? ?設置當前變換矩陣
? ? ? ? void glLoadIdentity() ?設置當前矩陣為單位矩陣 ? ? ?
? ? ? ? 壓入、彈出矩陣
? ? ? ? void glPushMatrix() ?依次壓入當前所有矩陣
? ? ? ? void glPopMatrix() ? ?彈出棧頂矩陣
? ? ? ? 兩個方法聯合操作可以保留下次變換之前的矩陣狀態。
?
? ? ? ?8、打開和關閉裁剪等功能
? ? ? ? 打開
? ? ? ? void glEnable(int cap)
? ? ? ? 實參含義:GL_CULL_FACE ?打開背面剪裁
? ? ? ? ? ? ? ? ? ? ? GL_DEPTH_TEST 打開深度測試
? ? ? ? ? ? ? ? ? ? ? GL_DITHER ? ? ? ?打開抗抖動
? ? ? ? 關閉
? ? ? ? void glDisable(int cap)
?
? ? ? 9、設置著色模型
? ? ? ? void glShadeModel(int mode)
? ? ? ? 實參含義:GL_SMOOTH ? 平滑著色,根據三個頂點的顏色進行漸變著色,相鄰兩點之間的顏色平滑過渡
? ? ? ? ? ? ? ? ? ? ? ?GL_FLAT ? ? ? ?不平滑著色,使用最后一個頂點的顏色進行填充
?
? ? ? ?10、設置旋繞方向
? ? ? ? openGL默認多邊形頂點逆時針排列為正面
? ? ? ? void glFrontFace(int mode)
? ? ? ? 實參含義:GL_CW ? 順時針為正面
? ? ? ? ? ? ? ? ? ? ? GL_CCW 逆時針為正面
?
? ? ? ?11、設置矩陣模式
? ? ? ? void ?glMatrixMode(int mode)
? ? ? ? 實參含義:GL_MODELVIEW ?設置為模型(幾何)變換矩陣
? ? ? ? ? ? ? ? ? ? ? GL_PROJECTION 設置為投影變換矩陣
? ? ? ? ? ? ? ? ??
? ? ? 12、繪圖
? ? ? ?openGL繪圖需要三個數組:頂點坐標數組,頂點顏色數組和頂點索引數組(索引可以不要)
? ? ? ?啟用和禁用頂點數組 ? ? ??
? ? ? ?void glEnableClientState(int array) ? ? 啟用
? ? ? ?實參含義:GL_VERTEX_ARRAY ? 啟用頂點坐標數組
? ? ? ? ? ? ? ? ? ? ?GL_COLOR_ARRAY ?啟用頂點顏色數組
? ? ? ?void glDisableClientState(int array) 禁用
? ? ? ?為畫筆指定頂點坐標數據
? ? ? ?void glVertexPointer(int size,int type,int stride,Buffer pointer)
? ? ? ?形參含義:size為坐標維數(一般等于3),type為坐標值的類型(GL_FIXED代表int型,GL_FLOAT代表float型),stride為步長(連續頂點之間的間隔),pointer為頂點數據的buffer
? ? ? 為畫筆指定顏色頂點坐標數據
? ? ? void glColorPointer(int size,int type,int stride,Buffer pointer) ? ? ?
? ? ? 形參含義:同頂點指定方法,size一般等于4
? ? ? 索引法繪圖
? ? ? void glDrawElements(int mode,int count,int type,Buffer indices)
? ? ? 形參含義:mode代表繪圖方式,常見的方式有:GL_POINTS(畫點),GL_LINES(每兩點畫一線段),GL_LINE_STRIP(按順序相鄰兩點畫一線段),GL_LINE_LOOP(按順序相鄰 ? ? ? ? ? ?頂點畫一線段,末尾頂點與第一個頂點再畫一線段),GL_TRIANGLES(每三個頂點畫一三角形),GL_TRIANGLE_STRIP(按頂點順序,每個頂點和它后面相鄰的兩個頂點畫一三角形),GL_TRIANGLE_FAN(第一個頂點為共用頂點,其之后的頂點按照順序每相鄰兩個和它構成一個三角形);
? ? ? ? ? ? ? ? ? ? count代表索引數組的長度(不同于頂點個數)
? ? ? ? ? ? ? ? ? ? type代表索引數據類型,如:GL_UNSIGNED_BYTE,GL_UNSIGNED_SHORT
? ? ? ? ? ? ? ? ? ? indices代表索引數據的buffer
? ? ? ?非索引法繪圖
? ? ? ?void glDrawArrays(int mode,int first,int count)
? ? ? ?形參含義:mode代表繪圖方式
? ? ? ? ? ? ? ? ? ? ?first代表第一個頂點的編號
? ? ? ? ? ? ? ? ? ? ?count代表頂點個數 ??
? ??
轉載于:https://www.cnblogs.com/yapollo/p/3537847.html
總結
以上是生活随笔為你收集整理的openGL学习笔记(1)——常用方法原型解释的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信个性签名怎么改不了
- 下一篇: ORACLE解决登陆em状态暂挂方法