美文网首页
OpenGL纹理学习(二)

OpenGL纹理学习(二)

作者: 忆痕无殇 | 来源:发表于2019-05-30 20:16 被阅读0次

7:使用颜色缓存区加载数据,形成新的纹理使用

extern void glCopyTexImage1D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) OPENGL_DEPRECATED(10.0, 10.14);

extern void glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) OPENGL_DEPRECATED(10.0, 10.14);

参数1: target:GL_TEXTURE_1D、GL_TEXTURE_2D、GL_TEXTURE_3D;
参数2:Level:指定所加载的mip贴图层次。一般我们吧这个参数设置为0;
参数3: internalformat:每个纹理单元中存储多少颜色成分;
参数4:x、y在颜色缓存区中指定了开始读取纹理数据的位置。缓存区里的数据,是源缓存区通过glReadBuffer设置的。
注意:不存在三维的,我们无法获取立体的纹理数据

8:纹理对象

1)使用函数分配纹理对象

void glGenTextures (GLsizei n, GLuint *textures);

指定纹理对象的数量和指针(指针指向一个无符号整型数组,由纹理对象标识符填充)。
2)绑定纹理状态

glBindTexture(GLenum target, GLuint *texture);

参数1: target:GL_TEXTURE_1D、GL_TEXTURE_2D、GL_TEXTURE_3D;
参数2: texture:需要绑定的纹理对象
3)删除绑定纹理对象

glDeleteTextures (GLsizei n, const GLuint *textures);

指定纹理对象的数量和指针(指针指向一个无符号整型数组,由纹理对象标识符填充)。
4)测试纹理对象是否有效

GLboolean glIsTexture (GLuint texture);

如果texture是一个以ing分配空间的纹理对象,那么这个函数返回GL_TRUE,否则会返回GL_FALSE。

9:设置纹理参数

  glTexParameterf(GLenum target, GLenum pname, GLfloat param);
  glTexParameteri(GLenum target, GLenum pname, GLint param);
  glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params);
  glTexParameteriv(GLenum target, GLenum pname, const GLint *params);

参数1: target:指定这些参数将要应用在哪个纹理模式上。
参数2: pname:指定需要设置哪个纹理参数
参数3: param:设定特定的纹理参数的值

10:设置过滤方式

1:临近过滤GL_NEAREST
2:线性过滤GL_LINEAR
应用

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

纹理缩小时,使用临近过滤。纹理放大时,使用线性过滤。

11:设置环绕方式

1)GL_REPEAT:对纹理的默认行为。在纹理坐标超过1.0方向上重复纹理图像。
2)GL_MIRRORED_REPEAT:和GL_REPEAT一样,但每次重复图片时镜像放置的
3)GL_CLAMP_TO_EDGE:纹理坐标会被约束在0到1之间,超出的部分会重复纹理坐标的边缘,产生一种边缘被拉伸的效果。
4)GL_CLAMP_TO_BORDER:在纹理坐标在0.0到1.0范围之外只使用边界纹理单元。边界纹理单元是作为围绕基本图像的额外的行列,并与基本纹理图像一起加载的。

   glTexParameteri(GLenum target, GLenum pname, GLint param);
例如:
 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

参数1:同上
参数2: GL_TEXTURE_WRAP_S、GL_TEXTURE_WRAP_T、GL_TEXTURE_WRAP_R,针对s、t、r纹理坐标。同x、y、z。
注:纹理坐标默认左下角为(0,0)不可以交叉。可以旋转。
参数3:
1)GL_REPEAT:在纹理坐标超过1.0的方向上对纹理进行重复。
2)GL_CLAMP:所需的纹理单元取自纹理边界或者TEXTURE_BORDER_COLOR.
3)GL_CLAMP_TO_EDGE:环绕模式强制对范围之外的纹理坐标沿着合法的纹理单元的最后一行或者最后一列进行采样。
4)GL_CLAMP_TO_BORDER:在纹理坐标在0.0到1.0范围之外的只使用边界纹理单元。边界纹理单元是作为围绕基本图像的额外的行和列,并与基本纹理图像一起加载的。


OpenGL像素格式.png

注:来源CC老师PPT

相关文章

  • OpenGL纹理学习(二)

    7:使用颜色缓存区加载数据,形成新的纹理使用 参数1: target:GL_TEXTURE_1D、GL_TEXTU...

  • OpenGL学习-纹理

    一:认识一些常用函数 1:从颜色缓存区内容作为像素图直接读取 2:从TGA文件中读取像素图 3:载入纹理 4:更新...

  • GLKit常用API解析

    GLKTextureInfo 创建OpenGL纹理信息 name: OpenGL上下文中纹理名称 target: ...

  • OpenGL ES GLKit 􏰼􏰜常用API解析

    GLKTextureInfo创建OpenGL纹理信息 name : OpenGL上下文中纹理名称 target :...

  • OpenGL纹理内容

    纹理可以理解为一张图片,OpenGL渲染图片会将图片的像素保存在纹理缓存中。 OpenGL常用纹理函数 载入纹理 ...

  • OpenGL纹理

    纹理可以理解为一张图片,OpenGL渲染图片会将图片的像素保存在纹理缓存中。OpenGL常用纹理函数 载入纹理 纹...

  • OPenGL ES纹理翻转解决方案

    纹理翻转 在使用OpenGL函数加载纹理到图形时,经常遇到纹理上下颠倒的问题。原因是因为OpenGL要求纹理坐标原...

  • OpenGL坐标概念

    openGL 顶点,坐标系,纹理坐标Android OpenGL es 纹理坐标设定与贴图规则对Android o...

  • OpenGL之纹理及应用案例

    纹理介绍 OpenGL使用的图片数据(纹理)都是tga格式的,而iOS/OpenGL ES使用PNG/JPEG格式...

  • OpenGL纹理坐标&&隧道案例(二)

    一.隧道案例效果 二.纹理坐标 纹理坐标主要是把图形映射到OpenGL中去,图形中每个顶点关联到对应的纹理坐标下,...

网友评论

      本文标题:OpenGL纹理学习(二)

      本文链接:https://www.haomeiwen.com/subject/zzovtctx.html