OpenGL ES纹理贴图
来源:互联网 发布:火焰切割圆弧怎么编程 编辑:程序博客网 时间:2024/03/28 23:11
OpenGL可以把纹理映射到指定的图形的表面上。简单一点的,就是给平面映射纹理,比如一个四边形,一个长方体的6个面,都可以指定位图作为纹理映射到各个面上,下面简单介绍相关的函数
1、glGenTextures函数void glGenTextures(GLsizei n, GLuint * textures);
函数参数的含义:
n —— 生成的纹理的名称的个数;textures —— 生成的纹理名称所存储位置的指针,也就是一个纹理数组的内存地址,或者说是数组首元素的内存地址。
函数被调用,会生成一系列纹理的名字,并存储到指定的数组中。
2、glBindTexture函数
glBindTexture函数实现了将调用glGenTextures函数生成的纹理的名字绑定到对应的目标纹理上。该函数的声明如下所示:
void glBindTexture(GLenum target,GLuint texture);
函数参数的含义:
target —— 纹理被绑定的目标,它只能取值GL_TEXTURE_1D或者GL_TEXTURE_2D;
texture —— 纹理的名称,并且,该纹理的名称在当前的应用中不能被再次使用。
3、glTexImage2D函数调用glTexImage2D函数,用来指定二维纹理图像。该函数的声明如下所示:
void glTexImage2D(
GLenum target,
GLint level,
GLint components,
GLsizei width,
GLsizei height,
GLint border,
GLenum format,
GLenum type,
const GLvoid *pixels );
函数参数的含义:
target —— 指定目标纹理,必须为GL_TEXTURE_2D;
level —— 指定图像级别的编号,0表示基本图像,其它可以参考MSDN;
components —— 纹理中颜色组件的编号,可是是1或2或3或4;
width —— 纹理图像的宽度;
height —— 纹理图像的高度;
border —— 纹理图像的边框宽度,必须是0或1;
format —— 指定像素数据的格式,一共有9个取值:GL_COLOR_INDEX、GL_RED、GL_GREEN、GL_BLUE、GL_ALPHA、GL_RGB、GL_RGBA、GL_BGR_EXT、GL_BGRA_EXT、GL_LUMINANCE、GL_LUMINANCE_ALPHA ,具体含义可以参考MSDN;
type —— 像素数据的数据类型,取值可以为GL_UNSIGNED_BYTE, GL_BYTE, GL_BITMAP, GL_UNSIGNED_SHORT, GL_SHORT, GL_UNSIGNED_INT, GL_INT, and GL_FLOAT;
pixels —— 内存中像素数据的指针。
4、glTexParameteri函数glTexParameteri函数或者glTexParameterf函数用来设置纹理参数,声明如下所示:
void glTexParameterf( GLenum target,GLenum pname, GLfloat param );
void glTexParameteri( GLenum target, GLenum pname, GLint param);
函数参数的含义:
target —— 目标纹理,必须为GL_TEXTURE_1D或GL_TEXTURE_2D;
pname —— 用来设置纹理映射过程中像素映射的问题等,取值可以为:GL_TEXTURE_MIN_FILTER、GL_TEXTURE_MAG_FILTER、GL_TEXTURE_WRAP_S、GL_TEXTURE_WRAP_T,详细含义可以查看MSDN;
param —— 实际上就是pname的值,可以参考MSDN。
另外,该类函数还有两个:
void glTexParameterfv()
void glTexParameteriv()
eg调用如下:glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
功能就是实现线形滤波的功能,当纹理映射到图形表面以后,如果因为其它条件的设置导致纹理不能更好地显示的时候,进行过滤,按照指定的方式进行显示,可能会过滤掉显示不正常的纹理像素。
5.glEGLImageTargetTexture2DOES函数
该函数可以完成相当于一般情况下的glTexImage2D的效果
EGLImage代表一种由EGL客户API(如OpenGL,OpenVG)创建的共享资源类型,它的本意是共享2D图像数据。
关于EGLImage的一种使用情景就是通过它来创建一个2D纹理:
eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target,EGLClientBuffer buffer, const EGLint *attrib_list)
其中,target决定了创建纹理的方式,buffer是图像数据,可以是一块gembuffer或者tbm surface
eg: image = eglCreateImage(EVAS_GL_NATIVE_SURFACE, tbm, NULL);
glBindTexture(GL_TEXTURE_2D, ad->texture);
glEGLImageTargetTexture2DOES(GL_TEXTURE_EXTERNAL_OES, image);//类似glTexImage2D的功能
(待补充)
平面贴纹理,mipmap
- OpenGL ES纹理贴图
- OpenGL ES纹理贴图
- OpenGL ES纹理贴图
- OpenGL ES 纹理贴图
- Opengl ES 学习笔记 3:纹理贴图
- android opengl es 纹理贴图资料
- opengl es纹理贴图效果实例
- Android Opengl ES 2.0 纹理贴图
- OpenGL ES二维纹理坐标贴图规则
- OpenGL ES绘制3D纹理贴图
- OpenGL ES入门05-OpenGL ES 纹理贴图
- Android OpenGL es 纹理坐标设定与贴图规则
- Android OpenGL es 纹理坐标设定与贴图规则
- Android OpenGL es 纹理坐标设定与贴图规则
- OpenGL ES教程VI之纹理贴图(原文对照)
- Android OpenGL es 纹理坐标设定与贴图规则
- Android OpenGL es 纹理坐标设定与贴图规则
- Android OpenGL es 3D Rubik Cube 多纹理贴图
- c++拾遗之数据类型占用内存大小总结
- 是客服还是快捷方式收到的房价的浪费时间
- C#设计模式学习小结之二 装饰模式
- 机器人实验室网址
- jqgrid使用
- OpenGL ES纹理贴图
- Android数据储存——文件储存
- Spring Mvc和Mybatis的多数据库访问配置过程
- 【LeetCode】Substring with Concatenation of All Words
- 安装java工具,配置环境变量——诺诺"涂鸦"记忆
- 构建一个Mongo分片集群
- 《Using OpenMP》第五章<如何通过使用OpenMP获得好的性能>笔记 ing
- 网页播放GlStudio代码
- 知名大学硕博论文及英文期刊全文资源集合