Android OpenGL10 多纹理效果 <5>

本文详细介绍了在Android中使用OpenGL ES实现多纹理效果的步骤,包括常见的API用法,如生成纹理索引、纹理绑定、纹理参数设置等。通过设置纹理目标、过滤器类型以及边界处理模式,实现所需的纹理效果。最后,文章给出了具体的渲染器类代码示例,以帮助读者理解如何在实际项目中应用这些概念。
摘要由CSDN通过智能技术生成

接着前面那一篇文章,上一篇没有特别介绍API,这里先介绍几个常见的API,然后给出验证程序:

glGenTextures(GLsizei n, GLuint *textures)

参数一:用来生成文理数量;

参数二:储存一个纹理索引,传入数组;

方法:根据纹理参数返回n个纹理索引;

void glBindTexture(	GLenum target,
 	GLuint texture);

参数一:  指定纹理要绑定到的目标,可配置参数很多:GL_TEXTURE_1D, GL_TEXTURE_2D, GL_TEXTURE_3D, GL_TEXTURE_1D_ARRAY, GL_TEXTURE_2D_ARRAY, GL_TEXTURE_RECTANGLE, GL_TEXTURE_CUBE_MAP, GL_TEXTURE_CUBE_MAP_ARRAY, GL_TEXTURE_BUFFER, GL_TEXTURE_2D_MULTISAMPLE or GL_TEXTURE_2D_MULTISAMPLE_ARRAY中的一个.

一般选GL_TEXTURE_2D作为输入.

参数二 : 指定纹理的名称(即ID),即第一个方法返回的纹理索引数组中的一个.

void texImage2D (int target, int level, Bitmap bitmap, int border)

参数一 : 一般设置为GL_TEXTURE_2D;

参数二 : 一般为0;

参数三 : 需要的图像;

参数四 : 边框间距(默认可以设为0);

void glTexParameterx (int target, int pname, int param)

参数一 : 指定纹理绑定的目标,参考第二个方法参数一,一般选GL_TEXTURE_2D;

参数二 : 纹理过滤,可选GL_TEXTURE_MAG_FILTER(放大过滤)和GL_TEXTURE_MIN_FILTER(缩小过滤),当然还有GL_TEXTURE_WRAP_S,GL_TEXTURE_WRAP_T;

参数三 : 如果参数二设置为过大过小滤镜,这个参数一般选择:GL_NEAREST,GL_LINEAR,其中意义:

GL_LINEAR : 使用了线性滤波(采用最靠近象素中心的四个象素的加权平均值)的纹理贴图。这需要机器有相当高的处理能力,但GL_LINEAR提供了比较光滑的效果;

GL_NEAREST : 则采用坐标最靠近象素中心的像素,这有可能使图像走样。从原理上讲,这种方式没有真正进行滤波。它只占用很小的处理能力。唯一的好处是所需计算比GL_LINEAR要少,这样我们的工程在很快和很慢的机器上都可以正常运行;

如果第二个参数不是前面两种,一般这里选择GL_CLAMP,其中意义:

GL_CLAMP : 将纹理坐标限制在0.0,1.0的范围之内.如果超出了会如何呢.不会错误,只是会边缘拉伸填充;


利用上面的几个方法既可以配置所需要的纹理效果出来.

如果要绑定要图形面上,可以在执行绘图之前:执行绑定操作.

void glBindTexture(	GLenum target,
 	GLuint texture);

然后再执行glDrawArrays或glDrawElements方法.


然后下面看看如何使用上面的套路来制作一个多纹理效果.

工程仍然采用上一篇的工程,只是在写两个类.

package org.pumpkin.pumpkinbasictexture.mu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值