ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:36.77KB ,
资源ID:5464952      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5464952.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(androidOpenGLgl10方法解析.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

androidOpenGLgl10方法解析.docx

1、androidOpenGLgl10方法解析我的androidOpenGL(2)gl10方法解析 javax.microedition.khronos.opengles接口GL10上级接口:GL下级接口:GL11公共接口GL10继承于GLGL10接口包含了Java(TM)程序语言为OpenGL绑定的核心功能。OES_byte_coordinates,OES_single_precision,OES_fixed_point,OES_read_format,以及OES_compressed_paletted_texture等扩展功能也是这个接口的一部分。一个以x或xv为后缀的方法是属于OES_fix

2、ed_point扩展功能的,并且需要一个或更多的修正的点为参数。这些修正的点可能是浮点点派生出来的值通过乘以65536后再取最接近整数得到。为了使用方便起见,这个接口记录了OpenGL ES各版本包括1.1及其扩展版本的方法。当运行一个OpenGL ES 1.0的应用程序时,被标为“(仅1.1)”可以被忽略。查看GL接口描述,了解如何获取该接口实例。方法的详细描述:glActiveTexturepublic void glActiveTexture(inttexture)功能:选择服务端活动的纹理单元详细:glActiveTexture选择哪一个纹理在后面的纹理状态改变时有效,纹理单元的数量是

3、依据该纹理单元所被支持的具体实现。在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_TEXT

4、URE_UNITS。参数:texture指定哪一个纹理单元为活动。必须是一个GL_TEXTUREi,其中0 = i GL_MAX_TEXTURE_UNITS,初始值为GL_TEXTURE0。glAlphaFuncpublic void glAlphaFunc(intfunc,floatref)功能:指定Alpha测试功能。详细:Alpha测试依据结果舍弃片段,该结果由引入片段的alpha值与参照值常量进行比较得到。glAlphaFunc指定参照值与比较方法。只有当alpha测试有效时,比较才有用。使alpha测试有效或无效可以利用glEnable和glDisable方法,它们都是以GL_ALP

5、HA_TEST为参数的,alpha测试初始为无效。func与ref指明像素被绘出的条件。引入的alpha值通过func指明的方法与ref指明的参照值进行比较。如果该值通过比较并且通过随后的模型测试与深度缓冲区测试,则将引入的片段绘出。如果该值未通过比较,则该像素区的帧缓冲区不会发生任何变化。比较方法如下:GL_NEVER:不会通过。GL_LESS:如果引入的alpha值比参照值小则通过。GL_EQUAL:如果引入的alpha值与参照值相等则通过。GL_LEQUAL:如果引入的alpha值小于或等于参照值则通过。GL_GREATER:如果引入的alpha值比参照值大则通过。GL_NOTEQUAL

6、:如果引入的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_ALW

7、AYS。初始值为GL_ALWAYS。ref指明与引入的alpha值比较的参照值,这个值的属于区间0, 1,初始值为0。glAlphaFuncxpublic void glAlphaFuncx(intfunc,intref)功能:glAlphaFunc的修正版本,仅仅参数类型由float ref变为int ref。glBindTexturepublic void glBindTexture(inttarget,inttexture)功能:将一个已命名的纹理与一个纹理目标绑定。详细:glBindTexture可以让你创建或使用一个已命名的纹理,调用glBindTexture方法并将target设置

8、为GL_TEXTURE_2D,将texture设置为你想要绑定的新纹理的名称。当一个纹理与目标绑定时,该目标之前的绑定关系将自动被释放。纹理的名称是一个无符号的整数。在每个纹理目标中,0被保留用以代表默认纹理。纹理名称与相应的纹理内容被保留在当前GL rendering上下文的共享的纹理对象空间中(参照eglCreateContext)你可以使用glGenTextures来设置一个新的纹理名称。当一个纹理被绑定时,对于其目标的GL操作将作用于该绑定的纹理之上。如果被绑定的纹理的目标的维度的纹理映射是活动的,则绑定的纹理被使用。实际上,纹理目标成为当前被绑定纹理的别名,并且纹理名称0指的是在初始

9、化时被绑定的默认纹理。通过glBindTexture绑定的纹理仍旧是活动的直到同一个目标被其他纹理绑定或者该绑定纹理通过glDeleteTextures删除为止。一旦创建,一个已命名的纹理可能经常需要与维度匹配的目标多次绑定。这样利用glBindTexture来将一个已命名的纹理与一个纹理目标绑定,比利用glTexImage2D进行纹理图像的重载要快的多。错误:当目标不是一个被允许的值时,会产生GL_INVALID_ENUM(错误枚举)。参数:target指明纹理要绑定的目标,必须是GL_TEXTURE_2D。texture指明纹理的名称。glBlendFuncpublic void glBl

10、endFunc(intsfactor,intdfactor)功能:指明像素算法。详细:像素可以通过函数操作后被绘出,该函数的功能是将引入的值与颜色缓冲中已有的值混合。使用glEnable方法与glDisable方法以GL_BLEND为参数,决定是否开启混合功能,该功能初始为关闭的。当混合功能开启时glBlendFunc定义混合功能的操作。sfactor指明十一中方法中的哪一种用来衡量源颜色要素,dfactor指明十种方法中的哪一种用来衡量目的颜色要素。十一种可能的方法将在下面进行介绍。每一种方法定义了四个衡量元素,分别是红、绿、蓝和alpha。在后面的内容中,源与目的颜色要素被指为(Rs, G

11、s, 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

12、 )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/k

13、A, 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 )尽管从表面上看混合算法并没有指

14、明上述等式的精度,因为混合操作是采用不精确的整型颜色值。然而应当等于1的混合因素要被确保没有修改它的被乘数,并且一个等于0的混合因素要降低它的被乘数至0。举一个例子,当sfactor是GL_SRC_ALPHA,dfactor 是GL_ONE_MINUS_SRC_ALPHA并且As等于kA时,等式进行简单替换。Rd = RsGd = GsBd = BsAd = As对于所有像素元素的写入操作进行glBlendFunc操作时,包括对于点、线、多边形的扫描转换,都不影响glClear方法。举例:为了渲染物体从远到近排列的效果,最好应用glBlendFunc(GL_SRC_ALPHA,GL_ONE_M

15、INUS_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 (

16、仅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

17、(仅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,

18、 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_A

19、LPHA, GL_ONE_MINUS_SRC_ALPHA);表示把渲染的图像融合到目标区域。也就是说源的每一个像素的alpha都等于自己的alpha,目标的每一个像素的alpha等于1减去该位置源像素的alpha。 因此不论叠加多少次,亮度是不变的。glClearpublic void glClear(intmask)功能:清理缓冲区,并设置为预设值。详细:glClear设置窗口位面区的值,该值由glClearColor, glClearDepth 和 glClearStencil等方法选择出。像素所有权测试、裁剪测试、抖动、颜色缓冲区掩饰将影响glClear操作,裁剪盒绑定清理区域。Alph

20、a功能、混合功能、逻辑操作、建模、纹理映射以及深度缓冲区会被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,

21、and GL_STENCIL_BUFFER_BIT。网络解释:glClear()语句的作用是用当前缓冲区清除值,也就是glClearColor或者glClearDepth等函数所指定的值来清除指定的缓冲区。比如: glClearColor(0.0,0.0,0.0,0.0); glClear(GL_COLOR_BUFFER_BIT); 第一条语句表示清除颜色设为黑色,第二条语句表示把整个窗口清除为当前的清除颜色,glClear()的唯一参数表示需要被清除的缓冲区。glClearColorpublic void glClearColor(floatred,floatgreen,floatblue,

22、floatalpha)功能:指定颜色缓冲区的清理值详细:glClearColor指明红、绿、蓝、alpha的值并通过glClear来清理颜色缓冲区,被glClearColor指明的值属于区间0, 1。参数:red指明颜色缓冲区被清理时红色的值,初始值为0。green指明颜色缓冲区被清理时绿色的值,初始值为0。blue指明颜色缓冲区被清理时蓝色的值,初始值为0。alpha指明颜色缓冲区被清理时alpha的值,初始值为0。glClearColorxpublic void glClearColorx(intred,intgreen,intblue,intalpha)功能:glClearColor的修

23、正方法。glClearDepthfpublic void glClearDepthf(floatdepth)功能:指明深度缓冲区的清理值。详细:glClearDepth方法指明深度值,并通过glClear来清理深度缓冲区。glClearDepth指明的值属于区间0, 1。参数:depth指明深度缓冲区被清理时的深度值,初始值为1。glClearDepthxpublic void glClearDepthx(intdepth)功能:glClearDepth的修正方法。glClearStencilpublic void glClearStencil(ints)功能:指明模板缓冲区的清理值。详细:g

24、lClearStencil指明glClear清理模板缓冲区时的索引,s为2m-1,其中m是模板缓冲区中的bit数。相关获取:glGetIntegerv方法,并以GL_STENCIL_BITS为参数。参数:s指明glClear清理模板缓冲区时的索引,初始值为0。glClientActiveTexturepublic void glClientActiveTexture(inttexture)功能:选择客户端活动纹理单元。glClientActiveTexture选择顶点矩阵,客户状态参数由glTexCoordPointer方法修改。可用性由glEnableClientState与glDisabl

25、eClientState决定,参数为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_UNI

26、TS,初始值为GL_TEXTURE0。glColor4fpublic void glColor4f(floatred,floatgreen,floatblue,floatalpha)功能:设置当前颜色。详细:GL储存当前四值的RGBA颜色,glColor可以设置新的四值的RGBA颜色。当前颜色值被储存为整型或浮点型,如果值被储存为浮点型,尾数和指数的大小未指明。在当前颜色更新之前整型与浮点型都不属于区间0, 1,然而颜色元素在修改或写入颜色缓冲区前会属于该区间。参数:red为当前颜色指明一个新的红色值,初始值为1。green为当前颜色指明一个新的绿色值,初始值为1。blue为当前颜色指明一个新

27、的蓝色值,初始值为1。alpha为当前颜色指明一个新的alpha值,初始值为1。glColor4xpublic void glColor4x(intred,intgreen,intblue,intalpha)功能:glColor4f的修正方法。glColorMaskpublic void glColorMask(booleanred,booleangreen,booleanblue,booleanalpha)功能:开启与禁止颜色元素的写入操作。详细:glColorMask指明单独的颜色元素是否可以被写入。举一个例子,如果red为false,则颜色缓冲区中的任何像素的颜色的红色元素将不会发生变化

28、,忽略企图的绘画操作,包括glClear。不可以控制元素单个位的改变,只能控制整个元素是否可以改变。参数:red指明红色元素是否可以写入颜色缓冲区,初始值为ture,表明可以写入。green指明绿色元素是否可以写入颜色缓冲区,初始值为ture,表明可以写入。blue指明蓝色元素是否可以写入颜色缓冲区,初始值为ture,表明可以写入。alpha指明alpha元素是否可以写入颜色缓冲区,初始值为ture,表明可以写入。glColorPointerpublic void glColorPointer(intsize,inttype,intstride,Bufferpointer)功能:定义一个颜色矩

29、阵。详细:glColorPointer指明渲染时使用的颜色矩阵。size指明每个颜色的元素数量,必须为4。type指明每个颜色元素的数据类型,stride指明从一个颜色到下一个允许的顶点的字节增幅,并且属性值被挤入简单矩阵或存储在单独的矩阵中(简单矩阵存储可能在一些版本中更有效率)。当一个颜色矩阵被指定,size, type, stride和pointer将被保存在客户端状态。如果颜色矩阵被启用,当使用glDrawArrays方法或glDrawElements方法时被调用。利用glEnableClientState方法与glDisableClientState方法以GL_COLOR_ARRAY

30、为参数来启用和禁止颜色矩阵,颜色矩阵初始值为禁用,不允许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(Vertex Buffer Object即顶

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1