原文:http://blog.sina.com.cn/s/blog_721d87eb0100wtbk.htmlhtml
接口GL10java
上級接口:GL算法
下級接口:GL11數組
公共接口GL10繼承於GL緩存
GL10接口包含了Java(TM)程序語言爲OpenGL綁定的核心功能。OES_byte_coordinates,OES_single_precision,OES_fixed_point,OES_read_format,以及OES_compressed_paletted_texture等擴展功能也是這個接口的一部分。服務器
一個以x或xv爲後綴的方法是屬於OES_fixed_point擴展功能的,而且須要一個或更多的修正的點爲參數。這些修正的點多是浮點點派生出來的值經過乘以65536後再取最接近整數獲得。網絡
爲了使用方便起見,這個接口記錄了OpenGL ES各版本包括1.1及其擴展版本的方法。當運行一個OpenGL ES 1.0的應用程序時,被標爲「(僅1.1)」能夠被忽略。app
查看GL接口描述,瞭解如何獲取該接口實例。ide
方法的詳細描述:函數
glActiveTexture
publicvoid glActiveTexture(int texture)
功能:
選擇服務端活動的紋理單元
詳細:glActiveTexture選擇哪個紋理在後面的紋理狀態改變時有效,紋理單元的數量是依據該紋理單元所被支持的具體實現。在OpenGL ES 1.0中至少一個,在OpenGL ES 1.1中至少兩個。
注意:
經常會這樣GL_TEXTUREi = GL_TEXTURE0+ i
一個紋理單元由紋理可用狀態、紋理矩陣堆、紋理環境以及當前渲染紋理組成。修改其中任一成分均會改變當前活動紋理單元。
點陣是客戶端GL資源,它經過glClientActiveTexture程序獲取。
錯誤:
當0 <= i <GL_MAX_TEXTURE_UNITS 時,若是紋理不是一個GL_TEXTUREi ,GL_INVALID_ENUM(錯誤枚舉)會產生。
相關獲取:
利用glGetIntegerv處理GL_MAX_TEXTURE_UNITS。
參數:
texture——指定哪個紋理單元爲活動。必須是一個GL_TEXTUREi,其中0 <= i < GL_MAX_TEXTURE_UNITS,初始值爲GL_TEXTURE0。
glAlphaFunc
publicvoid glAlphaFunc(int func,float ref)
功能:
指定Alpha測試功能。
詳細:
Alpha測試依據結果捨棄片斷,該結果由引入片斷的alpha值與參照值常量進行比較獲得。glAlphaFunc指定參照值與比較方法。只有當alpha測試有效時,比較纔有用。使alpha測試有效或無效能夠利用glEnable和glDisable方法,它們都是以GL_ALPHA_TEST爲參數的,alpha測試初始爲無效。
func與ref指明像素被繪出的條件。引入的alpha值經過func指明的方法與ref指明的參照值進行比較。若是該值經過比較而且經過隨後的模型測試與深度緩衝區測試,則將引入的片斷繪出。若是該值未經過比較,則該像素區的幀緩衝區不會發生任何變化。比較方法以下:
GL_NEVER:不會經過。
GL_LESS:若是引入的alpha值比參照值小則經過。
GL_EQUAL:若是引入的alpha值與參照值相等則經過。
GL_LEQUAL:若是引入的alpha值小於或等於參照值則經過。
GL_GREATER:若是引入的alpha值比參照值大則經過。
GL_NOTEQUAL:若是引入的alpha值與參照值不相等則經過。
GL_GEQUAL:若是引入的alpha值大於或等於參照值則經過。
GL_ALWAYS:老是經過。(初始設定)
對全部的像素寫入操做進行glAlphaFunc操做,包括那些從點、線、多邊形的掃描轉換獲得的結果。glAlphaFunc對glClear無影響。
錯誤:
當func不是被容許的值會產生GL_INVALID_ENUM(錯誤枚舉)。
參數:
func——指明alpha比較方法,被容許的符合常量有GL_NEVER, GL_LESS,GL_EQUAL, GL_LEQUAL, GL_GREATER, GL_NOTEQUAL, GL_GEQUAL, 和 GL_ALWAYS。初始值爲GL_ALWAYS。
ref——指明與引入的alpha值比較的參照值,這個值的屬於區間[0, 1],初始值爲0。
glAlphaFuncx
publicvoid glAlphaFuncx(int func,int ref)
功能:glAlphaFunc的修正版本,僅僅參數類型由float ref變爲int ref。
glBindTexture
publicvoid glBindTexture(int target,int texture)
功能:
將一個已命名的紋理與一個紋理目標綁定。
詳細:glBindTexture可讓你建立或使用一個已命名的紋理,調用glBindTexture方法並將target設置爲GL_TEXTURE_2D,將texture設置爲你想要綁定的新紋理的名稱。當一個紋理與目標綁定時,該目標以前的綁定關係將自動被釋放。
紋理的名稱是一個無符號的整數。在每一個紋理目標中,0被保留用以表明默認紋理。紋理名稱與相應的紋理內容被保留在當前GL rendering上下文的共享的紋理對象空間中(參照eglCreateContext)
你可使用glGenTextures來設置一個新的紋理名稱。
當一個紋理被綁定時,對於其目標的GL操做將做用於該綁定的紋理之上。若是被綁定的紋理的目標的維度的紋理映射是活動的,則綁定的紋理被使用。實際上,紋理目標成爲當前被綁定紋理的別名,而且紋理名稱0指的是在初始化時被綁定的默認紋理。
經過glBindTexture綁定的紋理仍舊是活動的直到同一個目標被其餘紋理綁定或者該綁定紋理經過glDeleteTextures刪除爲止。
一旦建立,一個已命名的紋理可能常常須要與維度匹配的目標屢次綁定。這樣利用glBindTexture來將一個已命名的紋理與一個紋理目標綁定,比利用glTexImage2D進行紋理圖像的重載要快的多。
錯誤:
當目標不是一個被容許的值時,會產生GL_INVALID_ENUM(錯誤枚舉)。
參數:
target——指明紋理要綁定的目標,必須是GL_TEXTURE_2D。
texture——指明紋理的名稱。
glBlendFunc
publicvoid glBlendFunc(int sfactor,int dfactor)
功能:
指明像素算法。
詳細:
像素能夠經過函數操做後被繪出,該函數的功能是將引入的值與顏色緩衝中已有的值混合。使用glEnable方法與glDisable方法以GL_BLEND爲參數,決定是否開啓混合功能,該功能初始爲關閉的。
當混合功能開啓時glBlendFunc定義混合功能的操做。sfactor指明十一中方法中的哪種用來衡量源顏色要素,dfactor指明十種方法中的哪種用來衡量目的顏色要素。十一種可能的方法將在下面進行介紹。每一種方法定義了四個衡量元素,分別是紅、綠、藍和alpha。
在後面的內容中,源與目的顏色要素被指爲(Rs, Gs, Bs, As)和(Rd, Gd, Bd, Ad),它們的值爲0至(kR, kG, kB, kA)之間的整數,其中kc = 2mc – 1,而且(mR, mG, mB, mA)是紅、綠、藍和alpha位平面的數量。
源和目標比例係數由(sR, sG, sB, sA)和(dR, dG, dB, dA)指定。比例係數用(fR, fG, fB, fA)表示,表明既不是源也不是目標因素,全部比例係數屬於區間[0,1]。
參數 (fR,fG, fB, fA)
GL_ZERO (0, 0, 0, 0)
GL_ONE (1, 1, 1, 1)
GL_SRC_COLOR (Rs/kR, Gs/kG, Bs/kB, As/kA )
GL_ONE_MINUS_SRC_COLOR (1, 1, 1, 1) - (Rs/kR, Gs/kG, Bs/kB, As/kA)
GL_DST_COLOR (Rd/kR, Gd/kG, Bd/kB, Ad/kA )
GL_ONE_MINUS_DST_COLOR (1, 1, 1, 1) - (Rd/kR, Gd/kG, Bd/kB, Ad/kA)GL_SRC_ALPHA (As/kA, As/kA,As/kA, As/kA ) GL_ONE_MINUS_SRC_ALPHA (1, 1, 1, 1) - (As/kA, As/kA, As/kA, As/kA) GL_DST_ALPHA (Ad/kA, Ad/kA, Ad/kA, Ad/kA )GL_ONE_MINUS_DST_ALPHA (1, 1, 1, 1) -(Ad/kA, Ad/kA, Ad/kA, Ad/kA) GL_SRC_ALPHA_SATURATE (i, i, i, 1)
i= min(As, kA - Ad) / kA
爲了肯定像素的混合值,系統利用下列等式。
Rd= min( kR, Rs sR + Rd dR )
Gd= min( kG, Gs sG + Gd dG )
Bd= min( kB, Bs sB + Bd dB )
Ad= min( kA, As sA + Ad dA )
儘管從表面上看混合算法並無指明上述等式的精度,由於混合操做是採用不精確的整型顏色值。然而應當等於1的混合因素要被確保沒有修改它的被乘數,而且一個等於0的混合因素要下降它的被乘數至0。舉一個例子,當sfactor是GL_SRC_ALPHA,dfactor 是GL_ONE_MINUS_SRC_ALPHA而且As等於kA時,等式進行簡單替換。
Rd= Rs
Gd= Gs
Bd= Bs
Ad= As
對於全部像素元素的寫入操做進行glBlendFunc操做時,包括對於點、線、多邊形的掃描轉換,都不影響glClear方法。
舉例:
爲了渲染物體從遠到近排列的效果,最好應用glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)處理透明度。請注意這個透明度計算不要求存在顏色緩衝區中的alpha位面數。
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA)對於渲染抗鋸齒的點和線也頗有效。
注意:
引入的(源)alpha被認爲是不透明的,範圍是1.0 (kA),代表徹底不透明,而0代表徹底透明。
錯誤:
當sfactor或dfactor爲不容許的值時,產生GL_INVALID_ENUM(錯誤枚舉)。
參數:
sfactor——指明源圖元的紅、綠、藍、alpha的混合比例是怎樣計算的。容許的符號符號常量有:GL_ZERO, GL_ONE,GL_SRC_COLOR (僅1.1), GL_ONE_MINUS_SRC_COLOR (僅1.1), GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR, GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA, 和 GL_SRC_ALPHA_SATURATE,初始值是GL_ONE。
dfactor——指明目圖元的紅、綠、藍、alpha的混合比例是怎樣計算的。容許的符號符號常量有:GL_ZERO, GL_ONE,GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR, GL_DST_COLOR (僅1.1),GL_ONE_MINUS_DST_COLOR (僅1.1), GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, 和 GL_ONE_MINUS_DST_ALPHA,初始值爲GL_ZERO
網絡解釋:
第一個參數指出源圖元的alpha的取值計算方法,第二個參數指出目標處的alpha的計算方法。
兩個參數的取值均可以是以下常量之一:
GL_ZERO, GL_ONE, GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA, and GL_SRC_ALPHA_SATURATE
好比GL_ZERO表示alpha取值爲0,GL_ONE表示1,GL_DST_COLOR表示取目標區域的顏色值,GL_SRC_ALPHA表示取源區域的alpha值等等。例如:
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
表示把渲染的圖像疊加到目標區域,也就是說源的每個像素的alpha都等於本身的alpha,目標的每個像素的alpha等於1。這樣疊加次數越多,疊加的圖元的alpha越高,獲得的結果就越亮。所以這種融合用於表達光亮效果。
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
表示把渲染的圖像融合到目標區域。也就是說源的每個像素的alpha都等於本身的alpha,目標的每個像素的alpha等於1減去該位置源像素的alpha。 所以不論疊加多少次,亮度是不變的。
glClear
publicvoid glClear(int mask)
功能:
清理緩衝區,並設置爲預設值。
詳細:
glClear設置窗口位面區的值,該值由glClearColor, glClearDepth 和 glClearStencil等方法選擇出。
像素全部權測試、裁剪測試、抖動、顏色緩衝區掩飾將影響glClear操做,裁剪盒綁定清理區域。Alpha功能、混合功能、邏輯操做、建模、紋理映射以及深度緩衝區會被glClear操做忽略。
glClear可使參數爲多個值按位與後的結果,以代表那個緩衝區須要清理。
有以下值:
GL_COLOR_BUFFER_BIT:代表顏色緩衝區。
GL_DEPTH_BUFFER_BIT:代表深度緩衝區。
GL_STENCIL_BUFFER_BIT:代表模型緩衝區。
注意:
若是緩衝區並無呈現出來,則glClear對指向的緩衝區無效果。
錯誤:
若是使用任一非已定義的值將產生GL_INVALID_VALUE(錯誤枚舉)。
參數:
mask——容許的值有GL_COLOR_BUFFER_BIT, GL_DEPTH_BUFFER_BIT, and GL_STENCIL_BUFFER_BIT。
網絡解釋:
glClear()語句的做用是用當前緩衝區清除值,也就是glClearColor或者glClearDepth等函數所指定的值來清除指定的緩衝區。好比:
glClearColor(0.0,0.0,0.0,0.0);
glClear(GL_COLOR_BUFFER_BIT);
第一條語句表示清除顏色設爲黑色,第二條語句表示把整個窗口清除爲當 前的清除顏色,glClear()的惟一參數表示須要被清除的緩衝區。
glClearColor
publicvoid glClearColor(float red,float green,float blue,float alpha)
功能:指定顏色緩衝區的清理值
詳細:glClearColor指明紅、綠、藍、alpha的值並經過glClear來清理顏色緩衝區,被glClearColor指明的值屬於區間[0, 1]。
參數:
red——指明顏色緩衝區被清理時紅色的值,初始值爲0。
green——指明顏色緩衝區被清理時綠色的值,初始值爲0。
blue——指明顏色緩衝區被清理時藍色的值,初始值爲0。
alpha——指明顏色緩衝區被清理時alpha的值,初始值爲0。
glClearColorx
publicvoid glClearColorx(int red,int green,int blue,int alpha)
功能:glClearColor的修正方法。
glClearDepthf
publicvoid glClearDepthf(float depth)
功能:指明深度緩衝區的清理值。
詳細:glClearDepth方法指明深度值,並經過glClear來清理深度緩衝區。glClearDepth指明的值屬於區間[0, 1]。
參數:
depth——指明深度緩衝區被清理時的深度值,初始值爲1。
glClearDepthx
publicvoid glClearDepthx(int depth)
功能:glClearDepth的修正方法。
glClearStencil
publicvoid glClearStencil(int s)
功能:指明模板緩衝區的清理值。
詳細:glClearStencil指明glClear清理模板緩衝區時的索引,s爲2m-1,其中m是模板緩衝區中的bit數。
相關獲取:
glGetIntegerv方法,並以GL_STENCIL_BITS爲參數。
參數:
s——指明glClear清理模板緩衝區時的索引,初始值爲0。
glClientActiveTexture
publicvoid glClientActiveTexture(int texture)
功能:選擇客戶端活動紋理單元。
glClientActiveTexture選擇頂點矩陣,客戶狀態參數由glTexCoordPointer方法修改。可用性由glEnableClientState與glDisableClientState決定,參數爲GL_TEXTURE_COORD_ARRAY。
注意:
總有GL_TEXTUREi = GL_TEXTURE0 + i。
錯誤:
若是texture不是一個GL_TEXTUREi,這裏0 <= i< GL_MAX_TEXTURE_UNITS,則產生一個GL_INVALID_ENUM(錯誤矩陣)。
相關獲取:
glGetIntegerv方法,並以GL_MAX_TEXTURE_UNITS爲參數。
參數:
texture——指定哪個紋理單元爲活動。紋理個數至少一個(對於1.0)或兩個(對於1.1)紋理必須是一個GL_TEXTUREi,其中0 <= i < GL_MAX_TEXTURE_UNITS,初始值爲GL_TEXTURE0。
glColor4f
publicvoid glColor4f(float red,float green,float blue,float alpha)
功能:設置當前顏色。
詳細:GL儲存當前四值的RGBA顏色,glColor能夠設置新的四值的RGBA顏色。
當前顏色值被儲存爲整型或浮點型,若是值被儲存爲浮點型,尾數和指數的大小未指明。
在當前顏色更新以前整型與浮點型都不屬於區間[0, 1],然而顏色元素在修改或寫入顏色緩衝區前會屬於該區間。
參數:
red——爲當前顏色指明一個新的紅色值,初始值爲1。
green——爲當前顏色指明一個新的綠色值,初始值爲1。
blue——爲當前顏色指明一個新的藍色值,初始值爲1。
alpha——爲當前顏色指明一個新的alpha值,初始值爲1。
glColor4x
publicvoid glColor4x(int red,int green,int blue,int alpha)
功能:glColor4f的修正方法。
glColorMask
publicvoid glColorMask(boolean red,boolean green,boolean blue,boolean alpha)
功能:開啓與禁止顏色元素的寫入操做。
詳細:glColorMask指明單獨的顏色元素是否能夠被寫入。舉一個例子,若是red爲false,則顏色緩衝區中的任何像素的顏色的紅色元素將不會發生變化,忽略企圖的繪畫操做,包括glClear。
不能夠控制元素單個位的改變,只能控制整個元素是否能夠改變。
參數:
red——指明紅色元素是否能夠寫入顏色緩衝區,初始值爲ture,代表能夠寫入。
green——指明綠色元素是否能夠寫入顏色緩衝區,初始值爲ture,代表能夠寫入。
blue——指明藍色元素是否能夠寫入顏色緩衝區,初始值爲ture,代表能夠寫入。
alpha——指明alpha元素是否能夠寫入顏色緩衝區,初始值爲ture,代表能夠寫入。
glColorPointer
publicvoid glColorPointer(int size,int type,int stride,Buffer pointer)
功能:
定義一個顏色矩陣。
詳細:
glColorPointer指明渲染時使用的顏色矩陣。size指明每一個顏色的元素數量,必須爲4。type指明每一個顏色元素的數據類型,stride指明從一個顏色到下一個容許的頂點的字節增幅,而且屬性值被擠入簡單矩陣或存儲在單獨的矩陣中(簡單矩陣存儲可能在一些版本中更有效率)。
當一個顏色矩陣被指定,size, type, stride和pointer將被保存在客戶端狀態。
若是顏色矩陣被啓用,當使用glDrawArrays方法或glDrawElements方法時被調用。利用glEnableClientState方法與glDisableClientState方法以GL_COLOR_ARRAY爲參數來啓用和禁止顏色矩陣,顏色矩陣初始值爲禁用,不容許glDrawArrays方法和glDrawElements方法調用。
使用glDrawArrays方法依據事先指明的頂點和頂點矩陣構建一系列圖元(都是同種類型的),使用glDrawElements方法依據頂點索引和頂點屬性構建一系列圖元。
注意:
glColorPointer在客戶端應用。
錯誤:
size不是4時將產生GL_INVALID_VALUE。
type不是一個容許的值時將產生GL_INVALID_ENUM。
stride爲負數時將產生GL_INVALID_VALUE。
pointer參數必須是直接緩存而且類型與type指定的類型相同。
參數:
size——指明每一個顏色的元素數量,必須爲4。
type——指明每一個矩陣中顏色元素的數據類型,容許的符號常量有GL_UNSIGNED_BYTE, GL_FIXED和GL_FLOAT,初始值爲GL_FLOAT。
stride——指明連續的點之間的位偏移,若是stride爲0時,顏色被緊密擠入矩陣,初始值爲0。
pointer——指明包含顏色的緩衝區,若是pointer爲null,則爲設置緩衝區。
拋出:
java.lang.IllegalStateException——若是是OpenGL ES 1.1而且VBOs(VertexBuffer Object即頂點緩衝對象)啓用。
java.lang.IllegalArgumentException——若是pointer不是直接緩存。
網絡解釋:
頂點數組的概念如此的簡單,如其名,就是將原來由一系列的glVertex*指定的頂點放在一個數組中,(其意思就是頂點數據組成的數組)由頂點數組處理函數一次性指定。事實上,不只如此,其一次性指定的不只僅是數組,還能夠是其餘系列的東西,好比表面發現,RGBA顏色,輔助顏色等。
glCompressedTexImage2D
publicvoid glCompressedTexImage2D(int target,
int level,
int internalformat,
int width,
int height,
int border,
int imageSize,
Buffer data)
功能:
指明一個二維的壓縮的紋理圖像。
詳細:
glCompressedTexImage2D定義一個壓縮格式的二維紋理圖像。
調色板紋理是被支持的壓縮格式,一個壓縮圖像的佈局是一個調色板,調色板由用以查找調色板的多層級數的紋理引用決定。調色板的格式能夠爲R5_G6_B5, RGBA4, RGB5_A1, RGB8, 或者RGBA8,紋理引用的分辨率能夠爲4位或8位。結果,調色板條目不是16就是256。若是level是0,數據中僅有一個紋理引用的層級數會被描述。不然,level爲負值指明描述紋理直到哪個層級數。可能會有剩餘爲最低分辨率填補的半個字節會被忽略。
注意:
glPixelStore對於壓縮紋理圖像無影響。
glCompressedTexImage2D指明當前綁定紋理的二維紋理以及當前紋理單元,分別經過glBindTexture方法和glActiveTexture方法。
錯誤:
若是target不是GL_TEXTURE_2D,將會產生GL_INVALID_ENUM(錯誤枚舉)。
若是level大於0或者絕對值大於log_2(max),這裏的max是GL_MAX_TEXTURE_SIZE的返回值。則產生GL_INVALID_VALUE。
(1.0) internalformat不是容許的符號常量,將產生GL_INVALID_VALUE(錯誤值)。
(1.1) internalformat不是容許的符號常量,將產生GL_INVALID_ENUM(錯誤枚舉)。
若是width或者height小於0或大於2 + GL_MAX_TEXTURE_SIZE,或者其中一個不能表示爲2^k + 2*border,k爲整數,將產生GL_INVALID_VALUE(錯誤值)。
若是border不是0則產生GL_INVALID_VALUE(錯誤值)。
若是圖像不符合格式、尺寸及壓縮圖像的內容,則產生GL_INVALID_VALUE(錯誤值)。
參數:
target——指明目標紋理,必須爲GL_TEXTURE_2D。
level——指明具體數值的等級數,必須小於等於0,0代表只有一種層級數,負數代表有多少被數據描述的層級數。
internalformat——指明紋理中的顏色元素,被容許的符號常量有:GL_PALETTE4_RGB8_OES, GL_PALETTE4_RGBA8_OES, GL_PALETTE4_R5_G6_B5_OES,GL_PALETTE4_RGBA4_OES, GL_PALETTE4_RGB5_A1_OES, GL_PALETTE8_RGB8_OES,GL_PALETTE8_RGBA8_OES, GL_PALETTE8_R5_G6_B5_OES, GL_PALETTE8_RGBA4_OES, andGL_PALETTE8_RGB5_A1_OES.
width——指明紋理圖像的寬度,必須是2^k + 2*border,k爲整數,全部版本支持的紋理圖像至少時64像素寬。
height——指明紋理圖像的高度,必須是2^k + 2*border,k爲整數,全部版本支持的紋理圖像至少時64像素高。
border——指明邊界寬度,必須爲0。
imageSize——指明壓縮紋理圖像的大小,單位爲byte。
data——指明一個包含壓縮紋理圖像數據的緩衝區。
拋出:
java.lang.IllegalArgumentException——若是data爲空。
java.lang.IllegalArgumentException——若是data.remaining()小於imageSize。
網絡解釋:
功能: 使用壓縮過的紋理圖像定義一個二維紋理. level: 提供多種分辨率的紋理. 如紋理只有一種分辨率,level則設置爲0. internalformat: 紋理圖像的壓縮格式, 必須是當前OpenGL實現支持的壓縮格式, 不然致使GL_INVALID_ENUM錯誤. width, height, depth: 指定二維紋理圖像的大小. 參數值的必須爲 2的m次方 + 2b. border: b的值, 必須是0
mipmap: 多個明細等級(即上面的層級數)
mipmap: 一系列預先經過濾波生成的, 分辨率遞減的紋理圖. 功能: 使用mipmap技術時, OpenGL根據物體的大小(以像素爲單位)自動肯定應使用哪一個紋理圖像. 方法: 必須提供從最大尺寸到1 x 1的, 大小爲2的冪的各類紋理圖.例如最大分辨率爲64 X 16, 就必須提供32X8, 16X4, 8X2, 4X1, 2X1, 1X1的紋理 原理: 小的紋理圖一般是經過對最大的紋理圖進行濾波處理獲得的,每一個紋素的值是前一個紋理圖中4個相應紋素的平均值. 使用: 用函數glTexImage2D()指定使用哪些紋理. 將參數level, width, height和image設置成不一樣的值. level的示例: 例如最大分辨率爲64 X 16,level爲0表示64X16,level爲1表示32X8, 以此類推(有些問題)
glCompressedTexSubImage2D
publicvoid glCompressedTexSubImage2D(int target,
int level,
int xoffset,
int yoffset,
int width,
int height,
int format,
int imageSize,
Buffer data)
功能:
指明二維壓縮紋理子圖。
詳細:
glCompressedTexSubImage2D在已存在的二維壓縮圖像的子區域從新定義紋理子圖。子圖將替換已存在紋理圖像的子區域。範圍是x方向從xoffset到xoffset+ width – 1,y方向從yoffset到yoffset + height – 1。寬、高都爲0不是錯誤,但沒有意義。
如今沒有支持該方法的壓縮格式。
注意:
glPixelStore對於壓縮紋理圖像無效果。
glCompressedTexImage2D指明當前綁定紋理的二維紋理以及當前紋理單元,分別經過glBindTexture方法和glActiveTexture方法。
錯誤:
若是target不是GL_TEXTURE_2D,將會產生GL_INVALID_ENUM(錯誤枚舉)。
若是紋理矩陣沒有被以前的glCompressedTexImage2D操做定義則產生GL_INVALID_OPERATION。
若是level小於0或者絕對值大於log_2(max),這裏的max是GL_MAX_TEXTURE_SIZE的返回值。則產生GL_INVALID_VALUE。
若是xoffset < -b, xoffset +width > (w - b), yoffset < -b, or yoffset + height > (h- b),這裏w紋理的寬度,h是紋理的高度,b是被修改的紋理圖像的邊界,則產生GL_INVALID_VALUE。注意w 和h包含2倍的邊界寬。
若是寬、高小於0則產生GL_INVALID_VALUE。
若是type不是類型常量則產生GL_INVALID_ENUM。
若是type是GL_UNSIGNED_SHORT_5_6_5而且format不是GL_RGB則產生GL_INVALID_OPERATION。
若是type是GL_UNSIGNED_SHORT_4_4_4_4或GL_UNSIGNED_SHORT_5_5_5_1而且format不是GL_RGB則產生GL_INVALID_OPERATION。
若是不是上述的情形則產生GL_INVALID_OPERATION。
相關獲取:
利用glGetIntegerv方法,參數爲GL_MAX_TEXTURE_SIZE。
參數:
target——指明目標紋理,必須是GL_TEXTURE_2D。
level——指明層級數。
xoffset——指明在紋理矩陣中在X方向上的偏移量。
yoffset——指明在紋理矩陣中在Y方向上的偏移量。
width——指明紋理子圖的寬。
height——指明紋理子圖的高。
format——指明像素數據的格式,如今沒有支持的格式。
imageSize——指明壓縮圖像的大小,以byte爲單位。
data——指明包含壓縮紋理圖像的緩衝區。
拋出:
java.lang.IllegalArgumentException——若是data爲空。
java.lang.IllegalArgumentException——若是data.remaining()小於imageSize。
網絡解釋:
功能: 用一個二維紋理圖像替換當前二維紋理圖像中的一個(矩形)區域. target:取值與函數glCopyTexImage2D()中相同. level, format, type: level是mipmap明細等級. format和type描述了紋理圖像數據的格式和數據類型. 子圖像受函數glPixelStore*()和glPixelTransfer*()設置的模式以及其餘像素轉移操做的影響. xoffset, yoffset: 要替換的子區域左下角相對於當前紋理左下角的位置. width, height: 要替換的子區域的寬度和高度. texels: 子圖像的紋理數據.
glCopyTexImage2D
publicvoid glCopyTexImage2D(int target,
int level,
int internalformat,
int x,
int y,
int width,
int height,
int border)
功能:
指明一個像素從顏色緩衝區得到的二維紋理圖像。
詳細:
glCopyTexImage2D定義一個像素從顏色緩衝區得到的二維紋理圖像。
獲取紋理數據的矩形,x、y表明矩形的左下角,寬爲width + 2*border,高爲height of height +2*border,分辨率爲level指明的分辨率,internalformat指明紋理的顏色元素。
每個被讀取的像素的紅、綠、藍、alpha元素被轉換爲未指明精度的內部整型或浮點型格式。轉換機構將元素最大值映射爲1.0,元素值爲0時映射爲0.0。而後值再被轉換爲紋理內部格式並儲存在像素矩陣中。
必須事先肯定內部格式以使顏色緩衝區元素在轉換時進行處理。但新的顏色元素不能添加。舉一個例子,一個RGB顏色緩衝區能夠被用來建立一個LUMINANCE或RGB紋理,不能是ALPHA、LUMINANCE_ALPHA或者RGBA紋理。
像素排列時,下面的x、y座標與紋理的下面的s、t座標相對應。
若是指明的顏色緩衝區矩形位於當前渲染的窗口的外面,則那些獲取的值是未定義的。
注意:
一個寬、高均爲0的圖像表示無紋理。
錯誤:
若是target不是GL_TEXTURE_2D,將會產生GL_INVALID_ENUM(錯誤枚舉)。
若是internalformat不與顏色緩衝區格式相匹配,將會產生GL_INVALID_OPERATION。
若是level小於0或者絕對值大於log_2(max),這裏的max是GL_MAX_TEXTURE_SIZE的返回值。則產生GL_INVALID_VALUE。
若是寬、高小於0或大於GL_MAX_TEXTURE_SIZE或不知足2^k + 2*border,k爲整數,將產生GL_INVALID_VALUE。
若是border不是0,將產生GL_INVALID_VALUE
(1.0) internalformat不是容許的符號常量,將產生GL_INVALID_VALUE(錯誤值)。
(1.1) internalformat不是容許的符號常量,將產生GL_INVALID_ENUM(錯誤枚舉)。
相關獲取:
glGetIntegerv方法,參數爲GL_MAX_TEXTURE_SIZE。
參數:
target——指明目標紋理,必須爲GL_TEXTURE_2D。
level——指明詳細層數,level 0是基本圖像level,level n是第n層級數壓縮圖像。
internalformat——指明圖像的顏色元素,容許的符號常量有GL_ALPHA, GL_LUMINANCE, GL_LUMINANCE_ALPHA, GL_RGB以及GL_RGBA。
x——複製矩形的左下角x座標。
y——複製矩形的左下角y座標。
width——指明紋理圖像寬度,必須是0 或者 2^n + 2*border,n爲整數。
height——指明紋理圖像高度,必須是0 或者 2^n + 2*border,n爲整數。
border——指明邊界寬度。必須爲0。
網絡解釋:
功能:複製幀緩存爲紋理數據 target: 必須爲常量GL_TEXTURE_2D level, internalFormat, border: 同函數glTexImage2D() x,y: 屏幕座標的左下點 width, height: 矩形的寬和高.
glCopyTexSubImage2D
publicvoid glCopyTexSubImage2D(int target,
int level,
int xoffset,
int yoffset,
int x,
int y,
int width,
int height)
功能:指明一個像素從顏色緩衝區得到的二維紋理圖像子圖。
詳細:glCopyTexSubImage2D
glCullFace
public void glCullFace(int mode)
功能:
指明多邊形的前面或後面是否被揀選。
詳細:
glCullFace指明多邊形的前面或後面是否被揀選(當mode被指明時)當揀選功能開啓。開啓或禁止揀選功能,調用glEnable方法和glDisable方法並以GL_CULL_FACE爲參數。揀選功能初始值爲禁止。
glFrontFace指明順時針和逆時針繪出多邊形,哪個是前面,哪個是背面。
注意:
若是mode是GL_FRONT_AND_BACK,多邊形不會被繪出,可是其餘圖元像點、線會被繪出。
錯誤:
若是mode不是被容許的值,將會產生GL_INVALID_ENUM。
參數:
mode——指明多邊形的前面或後面是否被揀選。容許的符號常量有:GL_FRONT,GL_BACK和GL_FRONT_AND_BACK。初始值爲GL_BACK。
glDrawElements
publicvoid glDrawElements(int mode,int count,int type,Buffer indices)
功能:
由矩陣數據渲染圖元。
詳細:
glDrawElements用少許調用指明多重幾何圖元,你能夠事先指明獨立的頂點、法線、顏色和紋理座標矩陣而且能夠經過調用glDrawElements方法來使用它們建立序列圖元。
當glDrawElements被調用,它會使用有序索引來查詢可用矩陣中的元素,並以此建立序列幾何圖元,若是GL_VERTEX_ARRAY被禁用,則不會建立。
頂點屬性由glDrawElements修改,glDrawElements在返回後會有一個未指明的值。舉一個例子,若是GL_COLOR_ARRAY啓用,當執行glDrawElements方法後,當前顏色的值是未定義的,屬性不會維持它以前的值。
錯誤:
若是mode的值不被容許,將產生GL_INVALID_ENUM。
若是type的值不被容許,將產生GL_INVALID_ENUM。
若是count是負數,將產生GL_INVALID_VALUE。
參數:
mode——指明被渲染的是哪一種圖元,被容許的符號常量有GL_POINTS,GL_LINE_STRIP,GL_LINE_LOOP,GL_LINES,GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN和GL_TRIANGLES
count——指明被渲染的元素個數。
type——指明索引指的類型,不是GL_UNSIGNED_BYTE就是GL_UNSIGNED_SHORT。
indices——指明存儲索引的位置指針。
拋出:
java.lang.IllegalStateException——若是最近一次調用glBindBuffer方法以GL_ELEMENT_ARRAY_BUFFER爲目標時,有一個非0緩衝區參數。
java.lang.IllegalArgumentException——若是索引爲空。
java.lang.ArrayIndexOutOfBoundsException——若是索引序列中從0到count-1中任意索引超出現有索引或數據矩陣範圍。
glEnable
public void glEnable(int cap)
功能:
啓用服務器端GL功能。
詳細:
glEnable方法和glDisable方法能夠啓用和禁止各類功能,各類功能(除了GL_DITHER和GL_MULTISAMPLE)的初始值爲GL_FALSE。
glEnable方法和glDisable方法都只有一個參數,它能夠採用下列值中的一個:GL_ALPHA_TEST——若是啓用,將進行alpha測試,詳見glAlphaFunc。
GL_BLEND——若是啓用,將引入的值與顏色緩衝區中的值混合,詳見glBlendFunc。
GL_COLOR_LOGIC_OP——若是啓用,容許(apply)引入的顏色與顏色緩衝區中的值進行邏輯運算。詳見glLogicOp。
GL_COLOR_MATERIAL——若是啓用,獲得當前顏色的周圍散開的痕跡。
GL_CULL_FACE——若是啓用,基於窗口座標採集多邊形。詳見glCullFace。
GL_DEPTH_TEST——若是啓用,作深度比較和更新深度緩存。值得注意的是即便深度緩衝區存在而且深度mask不是0,若是深度測試禁用的話,深度緩衝區也沒法更新。詳見glDepthFunc, glDepthMask和glDepthRange。
GL_DITHER——若是啓用顏色元素或索引將在被寫入顏色緩衝區以前進行dither。
GL_FOG——若是啓用,將霧的顏色效果與顯示紋理顏色混合。詳見glFog。
GL_LIGHTi——若是啓用,包含光線i在光線方程的評價中,詳見glLightModel和glLight。
GL_LIGHTING——若是啓用,用當前光線參數計算頂點顏色。不然僅僅簡單將當前顏色與每一個頂點關聯。詳見glMaterial, glLightModel和glLight。
GL_LINE_SMOOTH——若是啓用,畫線時使用調整過濾。不然,畫aliased線,詳見glLineWidth。
GL_MULTISAMPLE——若是啓用,爲單程反鋸齒和其餘效果顯示多樣本片斷,詳見glSampleCoverage
GL_NORMALIZE——若是啓用,法向量被計算爲單位向量,詳見glNormal和glNormalPointer。
GL_POINT_SMOOTH——若是啓用,使用調整過濾器描繪點,不然,畫aliased點,詳見glPointSize。
GL_POLYGON_OFFSET_FILL——若是啓用,在深度比較進行前多邊形片斷的深度值會進行移位。
GL_RESCALE_NORMAL——若是啓用,法向量的刻度由視圖模型矩陣中的元素肯定,詳見glNormal和glNormalPointer。
GL_SAMPLE_ALPHA_TO_MASK(僅1.0)——若是啓用,將alpha值轉變爲多樣本範圍修正碼。詳見glSampleCoverage。
GL_SAMPLE_ALPHA_TO_COVERAGE(僅1.1)——若是啓用,將會產生一個範圍值,它的每一個bit都是由相應的樣本位置的alpha值決定的。
GL_SAMPLE_ALPHA_TO_ONE——若是啓用,在計算完多樣本範圍修正碼後將片斷alpha值設爲被容許的最大值。詳見glSampleCoverage。
GL_SAMPLE_MASK(僅1.0)——若是啓用,在進行多樣本時,申請一個碼來修改片斷範圍。
GL_SAMPLE_COVERAGE(僅1.1)——若是啓用,片斷範圍會與另外一個臨時的範圍值進行與運算。這個臨時的範圍值與上文中GL_SAMPLE_ALPHA_TO_COVERAGE描述的範圍值的肯定方式相同。可是做爲GL_SAMPLE_COVERAGE_VALUE的值的功能,若是GL_SAMPLE_COVERAGE_VALUE爲GL_TRUE,在它與片斷範圍值進行與運算前,這個臨時的範圍值是倒置的(因此bit的值都是倒置的),詳見glSampleCoverage。
GL_SCISSOR_TEST——若是啓用,丟棄裁剪矩形外的片斷。詳見glScissor。
GL_STENCIL_TEST——若是啓用,作模板測試並更新模板緩衝區,詳見glStencilFunc,glStencilMask和glStencilOp。
GL_TEXTURE_2D——若是啓用,當前活動紋理單元爲二維紋理。詳見glActiveTexture,glTexImage2D,glCompressedTexImage2D和glCopyTexImage2D
GL_CLIP_PLANEi——若是啓用,裁剪面i可用。詳見glClipPlane。
GL_POINT_SPRITE_OES(1.1+ OES_point_sprite 擴展)——若是啓用,點塊紋理可用,詳見glPointSize和glTexEnv。
錯誤:
若是參數不是前面列表中的值,將會產生一個GL_INVALID_ENUM。
參數:
cap——指定一個在GL空間中聲明的符號常量。
glEnableClientState
publicvoid glEnableClientState(int array)
功能:
啓用客戶端的某項功能。
詳細:
glEnableClientState和glDisableClientState啓用或禁用客戶端的單個功能。默認的,全部客戶端功能禁用。
array能夠是下列符號常量:
GL_COLOR_ARRAY——若是啓用,顏色矩陣能夠用來寫入以及調用glDrawArrays方法或者glDrawElements方法時進行渲染。詳見glColorPointer。
GL_NORMAL_ARRAY——若是啓用,法線矩陣能夠用來寫入以及調用glDrawArrays方法或者glDrawElements方法時進行渲染。詳見glNormalPointer。
GL_TEXTURE_COORD_ARRAY——若是啓用,紋理座標矩陣能夠用來寫入以及調用glDrawArrays方法或者glDrawElements方法時進行渲染。詳見glTexCoordPointer。
GL_VERTEX_ARRAY——若是啓用,頂點矩陣能夠用來寫入以及調用glDrawArrays方法或者glDrawElements方法時進行渲染。詳見glVertexPointer。
GL_POINT_SIZE_ARRAY_OES(OES_point_size_arrayextension)——若是啓用,點大小矩陣控制大小以渲染點和點sprites。這時由glPointSize定義的點大小將被忽略,由點大小矩陣提供的大小將被用來渲染點和點sprites。詳見glPointSize。
注意:
啓用和禁用GL_TEXTURE_COORD_ARRAY將會影響活動的客戶紋理單元,活動的客戶紋理單元由glClientActiveTexture控制。
錯誤:
若是array不是被容許的值,將產生GL_INVALID_ENUM。
參數:
array——指明啓用的功能,容許的符號常量有GL_COLOR_ARRAY,GL_NORMAL_ARRAY,GL_TEXTURE_COORD_ARRAY,GL_VERTEX_ARRAY,和GL_POINT_SIZE_ARRAY_OES (OES_point_size_array extension)
glFrontFace
public void glFrontFace(int mode)
功能:
定義多邊形的正面和背面。
詳細:
在一個徹底由不透明的密閉surface組成的場景中,多邊形的背面永遠不會被看到。剔除這些不能顯示出來的面能夠加速渲染器渲染圖像的時間。開啓和禁用剔除功能,調用glEnable和glDisable方法並以GL_CULL_FACE爲參數。剔除功能初始值爲禁止。
若是一個虛擬的對象從第一個頂點,到第二個頂點,等等,直到最後一個頂點,這個多邊形頂點移動的方向是按順時針移動的,則這個多邊形窗口座標上的投影被認爲是按順時針繪出的。若是一個虛擬的對象從第一個頂點,到第二個頂點,等等,直到最後一個頂點,這個多邊形頂點移動的方向是按逆時針移動的,則這個多邊形窗口座標上的投影被認爲是按逆時針繪出的。glFrontFace指明多邊形在窗口座標中是順時的仍是逆時針被做爲正面。傳遞GL_CCW給mode則選擇逆時針多邊形爲正面,GL_CW則選擇順時針多邊形爲正面。默認逆時針多邊形爲正面。
錯誤:
若是mode不是被容許的值,將產生GL_INVALID_ENUM。
參數:
mode——多邊形正面的方向。GL_CW和GL_CCW被容許,初始值爲GL_CCW。
glHint
public void glHint(int target,int mode)
功能:
控制GL某些行爲。
詳細:
當擁有解釋的空間時,GL某些方面的行爲能夠由hints控制。一個hints由兩個參數指明。target是一個由常量符號描述的用以被控制的行爲。mode是另外一個由符號常量描述的想要執行的行爲。target的初始值是GL_DONT_CARE。mode容許的符號常量有:
GL_FASTEST——選擇最有效率的選項。
GL_NICEST——選擇最正確或質量最好的選項。
GL_DONT_CARE——無任何傾向。
儘管hints控制實現的方面能夠很好的定義,但hints的解釋仍依賴於具體的實現。hints控制的方面由target指明,容許的符號常量有:
GL_FOG_HINT——代表霧效果計算的精確度,若是每一個像素的霧效果計算不能被GL效率支持的話,那麼GL_DONT_CARE或GL_FASTEST能夠用於每一個每一個頂點的霧效果計算。
GL_LINE_SMOOTH_HINT——代表直線抗鋸齒的效果。若是應用一個大的過濾函數, GL_NICEST能夠應用於更多的在光柵化時產生的像素上。
GL_PERSPECTIVE_CORRECTION_HINT——代表顏色和紋理座標插值的效果。若是遠點修正插入不能被GL有效支持的話,那麼GL_DONT_CARE或者GL_FASTEST能夠應用於顏色的線性插值或是紋理座標。
GL_POINT_SMOOTH_HINT——代表反走樣點的效果。若是應用一個大的過濾函數,GL_NICEST能夠應用於更多的在光柵化時產生的像素上。
GL_GENERATE_MIPMAP_HINT(僅1.1)——代表自動生成的mipmap的質量和性能。
注意:
hints的解釋基於具體的實現。一些實現會忽略glHint設置。
錯誤:
target——指明一個符號常量來代表被控制的行爲。有GL_FOG_HINT ,GL_LINE_SMOOTH_HINT,GL_PERSPECTIVE_CORRECTION_HINT,和GL_POINT_SMOOTH_HINT,在1.1還有GL_GENERATE_MIPMAP_HINT。
mode——指明一個符號常量來代表想要執行的行爲。有GL_FASTEST,GL_NICEST和GL_DONT_CARE。
網絡解釋:
void glHint(GLenum target,GLenum hint); // 控制OpenGL的某些行爲 參數target是要控制的行爲 參數hint能夠是GL_FASTEST, GL_NICEST,GL_DONT_CARE.(效率最高, 質量最好, 沒有選擇) 參數target的取值及其含義: GL_POINT_SMOOTH_HINT, GL_LINE_SMOOTH_HINT, GL_POLYGON_SMOOTH_HINT----反走樣操做中, 直線,點或多邊形的採樣質量. GL_FOG_HINT----對每一個像素(GL_NICEST)仍是每一個頂點(GL_FASTEST)執行霧效計算. GL_PERSPECTIV_CORRECTION_HINT----顏色和紋理座標插值的質量 GL_GENERATE_MIPMAP_HINT----自動生成的mipmap的質量和性能 GL_TEXTURE_COMPRESSION_HINT----紋理圖案的壓縮質量和性能.
glLineWidth
public void glLineWidth(float width)
功能:
指明光柵化線段的寬度。
詳細:
glLineWidth指明可走樣或反走樣線的寬度。使用不是1的線寬會不會有不一樣的效果,取決與是否開啓反走樣功能。開啓和關閉反走樣功能需調用glEnable和 glDisable並以GL_LINE_SMOOTH爲參數。反走樣功能初始值爲關閉。
若是線的反走樣功能被關閉,實際的寬度由設定寬度的最近整數值決定。(若是這個整數是0,則按照1來處理)若是|deltax| >= |delta y|,每一個被光柵化的列的i個像素會被填充,i是指寬度的整數話的值。不然,沒行的的i個像素點會被填充。
若是反走樣功能啓用的話,線光柵化時會爲每一個像素區產生一個片斷,這些像素區以矩形形式貫穿這個區域,矩形的寬度等於當前的線寬,長度等於線的真實長度,並以該線段爲中心。每一個片斷的覆蓋值是矩形區域相應的像素區域的座標區域。這個值被保存起來,在光柵化時使用。
當反走樣功能開啓時,不是全部的寬度都被支持。若是設置了一個不不被支持的值,將會使用離這個值最近的被支持的值。只有1能夠保證是被支持的值,其餘值要依據相應的應用平臺來肯定。一樣的,對於走樣的線寬度也有一個範圍。想詢問被支持的線寬範圍以及這個範圍內被支持線寬的大小不一樣處,須要調用glGetIntegerv方法並以GL_ALIASED_LINE_WIDTH_RANGE,GL_SMOOTH_LINE_WIDTH_RANGE,GL_SMOOTH_LINE_WIDTH_GRANULARITY爲參數。
注意:
沒有反走樣的線線寬可能會在由應用平臺決定的最大值之內,可使用glGetIntegerv方法並以GL_ALIASED_LINE_WIDTH_RANGE爲參數來這個最大線寬。
錯誤:
若是線寬小於等於0,將會產生GL_INVALID_VALUE。
參數:
width——指定光柵化時的線寬度,初始值爲1。
glLoadIdentity
public void glLoadIdentity()
功能:
用特徵矩陣代替當前矩陣。
詳細:
glLoadIdentity使特徵矩陣代替當前矩陣。語義上等價於調用glLoadMatrix方法並以特徵矩陣爲參數。
( 1 0 0 0 )
( 0 1 0 0 )
( 0 0 1 0 )
( 0 0 0 1 )
但在一些狀況下它更高效。
glMatrixMode
public void glMatrixMode(int mode)
功能:
指明哪一個矩陣是當前矩陣。
詳細:
glMatrixMode設置當前矩陣模式,mode容許的值有:
GL_MODELVIEW——應用視圖矩陣堆的後續矩陣操做。
GL_PROJECTION——應用投射矩陣堆的後續矩陣操做。
GL_TEXTURE——應用紋理矩陣堆的後續矩陣操做。
GL_MATRIX_PALETTE_OES(OES_matrix_palette擴展)——啓用矩陣調色板堆棧擴展,並應用矩陣調色板堆棧後續矩陣操做。
錯誤:
若是mode不是一個容許的值,將產生一個GL_INVALID_ENUM。
參數:
mode——指明哪個堆容許後續的矩陣操做。容許的值有L_MODELVIEW,GL_PROJECTION和GL_TEXTURE,在有OES_matrix_palette擴展時,GL_MATRIX_PALETTE_OES也被容許,初始值是GL_MODELVIEW。
glRotatef
publicvoid glRotatef(float angle,float x,float y,float z)
功能:
用旋轉矩陣乘以當前矩陣。
詳細:
glRotate將圍繞向量(x, y, z)產生必定角度的旋轉。由旋轉矩陣乘以當前矩陣(詳見glMatrixMode),並由其乘積代替當前矩陣。好像調用glMultMatrix方法,並如下列矩陣爲參數:
(x^2(1 - c) + c xy (1 - c) -zs xz (1 - c) + ys 0 )
(xy (1 - c) + zs y^2(1 - c) + c yz (1 - c) - xs 0 )
(xz (1 - c) - ys yz (1 - c) +xs z^2(1 - c) + c 0 )
( 0 0 0 1 )
這裏c = cos (angle), s = sin (angle),and ||(x, y, z)|| = 1, (若是不是, GL 將格式化該向量)。
若是矩陣模式是GL_MODELVIEW或者GL_PROJECTION,調用glRotate方法後全部被繪對象將旋轉一個角度。使用glPushMatrix方法和glPopMatrix方法儲存未旋轉座標系統。
注意:
旋轉方式服從右手原則,因此若是一個向量(x, y, z)指向用戶方向,將按逆時針方向旋轉。
參數:
angle——指明旋轉的角度,單位爲度。
x——指明旋轉向量的x座標。
y——指明旋轉向量的y座標。
z——指明旋轉向量的z座標。
glRotatex
publicvoid glRotatex(int angle,int x,int y,int z)
功能:
glRotatef的修正方法。
glScalef
publicvoid glScalef(float x,float y,float z)
功能:
用縮放矩陣乘以當前矩陣。
詳細:
glScale沿着x、y、z座標軸產生並不統一的縮放。三個參數代表沿着每一個座標軸想要的縮放因子。
用縮放矩陣乘以當前矩陣(詳見glMatrixMode),其乘積將代替當前矩陣,就好像調用glMatrixMode方法,並如下列矩陣爲參數:
(x 0 0 0 )
(0 y 0 0 )
(0 0 z 0 )
(0 0 0 1 )
若是矩陣模式不是GL_MODELVIEW就是GL_PROJECTION的話,則調用glScale方法後因此被繪的對象將產生一個縮放。
使用glPushMatrix方法和glPopMatrix方法儲存未縮放座標系統。
注意:
若是不只僅一個縮放矩陣應用於模式視圖矩陣,而且啓用光線效果,光線經常出現錯誤。這種狀況下,調用glEnable方法並以GL_NORMALIZE爲參數,啓用法線自動格式化功能。
參數:
x——指明x座標軸上的縮放因子。
y——指明y座標軸上的縮放因子。
z——指明z座標軸上的縮放因子。
glScalex
publicvoid glScalex(int x,int y,int z)
功能:
glScalef方法的修正方法。
glShadeModel
public void glShadeModel(int mode)
功能:
選擇恆定或光滑着色模式。
詳細:
GL圖元能夠採用恆定或者光滑着色模式,默認值爲光滑着色模式。當圖元進行光柵化的時候,將引發插入頂點顏色計算,不一樣顏色將被均勻分佈到各個像素片斷。恆定着色模式則選擇計算一個頂點的顏色並在光柵化一個圖元時分佈到全部產生的像素片斷。無論任何狀況下,若是光照功能開啓的話頂點顏色計算時會有光照效果或者當光照效果關閉的話被指定的頂點計算顏色爲那時的當前顏色。恆定和光滑着色模式不能區分點。在頂點矩陣開始時開始,並開始頂點計數,而圖元是從1開始的。GL使恆定着色模式的線段i計算第i+1頂點的顏色,即它的第二個頂點。計算一樣從1開始,GL使恆定着色模式的多邊形計算第i+2頂點的顏色,即指明多邊形的最後一個頂點。
恆定和光滑着色模式由glShadeModel使用GL_FLAT和GL_SMOOTH參數來設定。
錯誤:
若是參數是GL_FLAT或GL_SMOOTH之外的值,將產生GL_INVALID_ENUM。
參數:
mode——指明一個符號常量來表明要使用的着色技術。容許的值有GL_FLAT 和GL_SMOOTH,初始值爲GL_SMOOTH。
glTranslatef
publicvoid glTranslatef(float x,float y,float z)
功能:
用平移矩陣乘以當前矩陣。
詳細:
glTranslate經過向量(x, y, z) 產平生移,以平移矩陣乘以當前矩陣(見glMatrixMode),用乘積代替當前矩陣,就好像調用glMultMatrix方法並如下列矩陣爲參數:
(1 0 0 x )
(0 1 0 y )
(0 0 1 z )
(0 0 0 1 )
若是矩陣模式是GL_MODELVIEW或GL_PROJECTION,則調用glTranslate方法後所繪的對象都將發平生移。
使用glPushMatrix方法和glPopMatrix方法來保存沒有平移的座標系統。
參數:
x——指明平移向量的x座標。
y——指明平移向量的y座標。
z——指明平移向量的z座標。
glTranslatex
publicvoid glTranslatex(int x,int y,int z)
功能:
glTranslatef方法的修正方法。
glVertexPointer
publicvoid glVertexPointer(int size,int type,int stride,Buffer pointer)
功能:
定義一個頂點座標矩陣。
詳細:
glVertexPointer指明當渲染時一個頂點座標矩陣的存儲單元和數據。
當一個頂點矩陣被指明時,size, type, stride和pointer保存爲客戶端狀態。
若是頂點矩陣功能啓用,當調用glDrawArrays方法或glDrawElements方法時會使用。想要啓用或禁止頂點矩陣,使用glEnableClientState或glDisableClientState方法,並以GL_VERTEX_ARRAY爲參數。頂點矩陣初始爲禁止,調用glDrawArrays方法或glDrawElements方法時無效。
調用glDrawArrays方法根據事先指明的點和頂點屬性矩陣建立一系列圖元(都有相同的類型)。調用glDrawElements方法根據頂點索引和頂點屬性建立一系列圖元。
注意:
glVertexPointer在通常版本中是在客戶端的。
錯誤:
若是size不是2, 3或者4,將產生GL_INVALID_VALUE。
若是type不是容許的值,將產生GL_INVALID_ENUM。
若是stride是負值,將產生GL_INVALID_VALUE。
pointer必須是直接緩存,而且類型與type指明的類型相同。
參數:
size——每一個頂點的座標維數,必須是2, 3或者4,初始值是4。
type——指明每一個頂點座標的數據類型,容許的符號常量有GL_BYTE, GL_SHORT, GL_FIXED和GL_FLOAT,初始值爲GL_FLOAT。
stride——指明連續頂點間的位偏移,若是爲0,頂點被認爲是緊密壓入矩陣,初始值爲0。
pointer——指明頂點座標的緩衝區,若是爲null,則沒有設置緩衝區。
拋出:
java.lang.IllegalStateException——若是是OpenGL ES 1.1而且VBOs可用。
java.lang.IllegalArgumentException——若是pointer不是直接緩存。
glViewport
publicvoid glViewport(int x,int y,int width,int height)
功能:
設置一個視口
詳細:
glViewport指明x、y從標準設備座標到窗口座標的仿射變換,使(xnd, ynd)爲標準設備座標,而後窗口座標(xw, yw)由下列公式計算:
xw= ( xnd + 1 ) width/2 + x
yw= ( ynd + 1 ) height/2 + y
視口寬、高的範圍區間視版本而定,想查詢此區間可以使用方法glGetIntegerv,並以GL_MAX_VIEWPORT_DIMS爲參數。
錯誤:
若是寬、高爲負數,將產生GL_INVALID_VALUE
參數:
x——指明視口矩形的左下角x座標,初始值爲0。
y——指明視口矩形的左下角y座標,初始值爲0。
width——指明視口的寬,若是GL上下文首次附於一個surface則寬、高爲這個surface大小。
height——指明視口的高,若是GL上下文首次附於一個surface則寬、高爲這個surface大小。