openGL+gl10方法使用.docx

上传人:夏** 文档编号:548178580 上传时间:2023-12-08 格式:DOCX 页数:33 大小:56.30KB
返回 下载 相关 举报
openGL+gl10方法使用.docx_第1页
第1页 / 共33页
openGL+gl10方法使用.docx_第2页
第2页 / 共33页
openGL+gl10方法使用.docx_第3页
第3页 / 共33页
openGL+gl10方法使用.docx_第4页
第4页 / 共33页
openGL+gl10方法使用.docx_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《openGL+gl10方法使用.docx》由会员分享,可在线阅读,更多相关《openGL+gl10方法使用.docx(33页珍藏版)》请在金锄头文库上搜索。

1、Android OpenGL GL10的方法解析这是我在网上找到底资料对学习openGL的初学者帮助挺大的。好好看吧原文地址:http:/ ES各版本包括1.1及其扩展版本的方法。当运行一个OpenGL ES 1.0的应用程序时,被标为“(仅1.1)”可以被忽略。查看GL接口描述,了解如何获取该接口实例。方法的详细描述:glActiveTexturepublicvoid glActiveTexture(inttexture)功能:选择服务端活动的纹理单元详细:glActiveTexture选择哪一个纹理在后面的纹理状态改变时有效,纹理单元的数量是依据该纹理单元所被支持的具体实现。在OpenGL

2、 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指定哪

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

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

5、L_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指明与

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

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

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

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

10、,它们的值为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 (

11、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 )

12、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 )尽管从表面上看混合算法并没有指明上述等式的精度,因为混合操作是采用不精确的整型颜色值。然

13、而应当等于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_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

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号