原文: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大小。