OpenGL 之 纹理贴图

概念

1、图元:其实就是SurfaceView
2、纹理映射:为图元每个顶点指定纹理坐标,通过纹理坐标在纹理图确定纹理区域,最后将纹理区域的内容映射到图元上
3、纹理采样:图元上的每个片元在片元着色器根据纹理坐标的易变变量,从纹理图中提取对应位置颜色的过程
4、纹理图片:宽高必须是 2的n次方
5、多重纹理:对同一个图元采用多幅纹理图

核心函数

1、glGenTextures函数 (GLsizei n, GLuint * textures);
n——生成纹理id的个数
textures——一个纹理数组的内存地址

2、glBindTexture函数 (GLenum target,GLuint texture);
target——只能取GL_TEXTURE_1D或者GL_TEXTURE_2D;
texture——纹理名称,一个应用不能用两次

3、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表示基本图像
components —— 纹理中颜色组件的编号,1或2或3或4;
width —— 纹理图像的宽度;
height —— 纹理图像的高度;
border —— 纹理图像的边框宽度,必须是0或1;
format —— 指定像素数据的格式,一共有9个取值;
type —— 像素数据的数据类型;
pixels —— 内存中像素数据的指针。

4、glTexParameteri函数 ( GLenum target,GLenum pname, GLfloat param );
或者是glTexParameterf函数(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
target —— 目标纹理,必须为GL_TEXTURE_1D或GL_TEXTURE_2D;
pname —— 用来设置纹理映射过程中像素映射的问题等
另外还有两个同类函数:
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
功能就是实现线形滤波的功能,可能会过滤掉显示不正常的纹理像素。

5.glEGLImageTargetTexture2DOES函数
//类似glTexImage2D的功能

你可能感兴趣的:(Android)