Android OpenGL中的纹理
来源:互联网 发布:java并发编程 lock 编辑:程序博客网 时间:2024/03/29 09:19
一、加载纹理
1、生成纹理索引。
用到的函数:
static void glGenTextures(int n, IntBuffer textures)
static void glGenTextures(int n, int[] textures, int offset)
例如:
int texture[ ] = new int[1];
gl.glGenTextures(1, texture,0);
2、将索引与纹理绑定。
用到的函数:
static void glBindTexture(int target, int texture)
例如:
gl.glBindTexture(GL10.GL_TEXTURE_2D, texture[0]);
3、对该纹理进行过滤设置。
用到的函数:
static void glTexParameterf(int target, int pname, float param)
static void glTexParameterx(int target, int pname, int param)
例如:
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER,GL10.GL_NEAREST);
gl.glTexParameterf(GL10.GL_TEXTURE_2D,GL10.GL_TEXTURE_MAG_FILTER,GL10.GL_LINEAR);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S,GL10.GL_CLAMP_TO_EDGE);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T,GL10.GL_CLAMP_TO_EDGE);
4、使用Bitmap图片生成纹理。
用到的函数:
texImage2D(int target, int level, Bitmap bitmap, int border)
该函数有多个实现。
代码示例:
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0,bitmap, 0);
其中bitmap为Android中的Bitmap的实例。在加载之后释放bitmap本地对象。
代码示例:
badlogic.recycle();
通过以上四步操作,成功加载了一张纹理。
二、使用纹理
1、开启纹理状态。
gl.glEnable(GL10.GL_TEXTURE_2D);
2、开启纹理数组功能。
gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
3、指定纹理数组
gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, _textureBuffer);
4、绑定纹理
gl.glBindTexture(GL10.GL_TEXTURE_2D, texID);
5、绘制图形
6、关闭纹理数组状态以及纹理状态
gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
gl.glDisable(GL10.GL_TEXTURE_2D);
通过以上几步操作,可以将纹理绑定在一个图形上,当然在这之前以及对纹理坐标数组进行了初始化,这里不做考虑
3、纹理坐标需要注意的一点。
a、纹理坐标数组的顺序是按照顶点数组中的顶点顺序来编写的,而不是按照顶点索引数组中的顺序来编写的。
b、Android和OpenGL中,对一张图片的纹理编号是不同的,
在OpenGL中,纹理的起点坐标为左下角(0,0)、右下角(1,0)、右上角(1,1)、左上角(0,1)。
而Android中, 纹理的起点坐标为左上角(0,0)、右上角(1,0)、右下角(1,1)、左下角(0,1)。
Android中的纹理坐标和OpenGl中的纹理坐标,刚好是180°倒立的,如果按照OpenGL中的纹理坐标规则的话 ,那么贴出了的纹理将是倒立的。
- Android OpenGL中的纹理
- Android OpenGL中的纹理
- [OpenGL]OpenGl中的纹理
- opengl中的纹理映射
- opengl中的纹理映射
- OpenGL 中的纹理
- OpenGL中的纹理映射
- Android OpenGL添加纹理
- Android OpenGL纹理
- OpenGL中的纹理图片要求
- OpenGL 中的三维纹理操作
- OpenGL 中的Texture(纹理)
- Android opengl 立方体 多纹理
- Android OpenGL ES (2) -- 纹理
- android opengl压缩纹理读入
- android openGl纹理的使用
- 关于OpenGL ES中的纹理压缩
- OpenGL ES 纹理映射问答中的领悟
- 并查集
- iPhone SDK开发:如何显示WiFi提示
- 倒霉熊
- 自然摄影指南——第一章:曝光:没有测光表时的曝光:“晴天 f/16”法则
- 数据库范式简析和举例
- Android OpenGL中的纹理
- 关于C语言中getopt()函数的使用方法
- System.DateTime.Now.ToString()的一些用法
- 自然摄影指南——第一章:曝光:景深和快门速度
- 10g 文件系统与ASM系统的切换
- Android系统的不同分辨率的兼容问题
- javaMail 接收邮件
- 自然摄影指南——第一章:曝光:校准你的测光表
- yii CDbException 处理