美文网首页
OpenGL纹理学习

OpenGL纹理学习

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

纹理常用API简介

##1:改变像素存储方式
void glPixelStorei (GLenum pname, GLint param);
##2:恢复像素存储方式
void glPixelStoref (GLenum pname, GLfloat param);

//参数(GLenum pname)1:GL_UNPACK_ALIGNMENT 指定OpenGL 如何从数据缓存区中解包图像 数据
参数( GLint param)2:表示参数GL_UNPACK_ALIGNMENT 设置的值
GL_UNPACK_ALIGNMENT 指内存中每个像素⾏行行起点的排列列请求,允许设置为1 (byte排列列)、2(排列列为偶数byte的⾏行行)、4(字word排列列)、8(⾏行行从双字节 边界开始)

例如:glPixelStorei(GL_UNPACK_ALIGNMENT,1);

3:从颜色缓存区内容作为像素图直接读取

void glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels) OPENGL_DEPRECATED(10.0, 10.14);

//参数1:x,矩形左下角的窗口坐标
参数2:y,矩形左下角的窗口坐标
参数3:width,矩形的宽,以像素为单位。
参数4:height,矩形的高,以像素为单位。
参数5:format,OpenGL的像素格式
参数6:type,解释参数pixels指向的数据,告诉OpenGL使用缓存区中的什么数据类型来存储颜色分量,像素数据的数据类型。
参数7:pixels,指向图形数据的指针

  例如:glReadBuffer(mode);—> 指定读取的缓存
              glWriteBuffer(mode);—> 指定写⼊入的缓存

4:载入纹理

1) void glTexImage1D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels) OPENGL_DEPRECATED(10.0, 10.14);
2) void glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) OPENGL_DEPRECATED(10.0, 10.14);
3) void glTexImage3D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels) OPENGL_DEPRECATED(10.0, 10.14);

参数1: target:GL_TEXTURE_1D、GL_TEXTURE_2D、GL_TEXTURE_3D;
参数2:Level:指定所加载的mip贴图层次。一般我们吧这个参数设置为0;
参数3: internalformat:每个纹理单元中存储多少颜色成分;
参数4:width,height,depth,指加载纹理的宽度、高度、深度。注意:!老版本这些值必须是2的整数次方。(这是因为OpenGL旧版本上遗留下的一个要求。当然现在已经支持不是2的整数次方。但开发者们还是习惯使用以2的整数次方去设置这些参数)
参数5:border:允许为纹理贴图指定一个边界宽度
参数6:format:所读象素数据元素的格式(索引值或R、G、B、A值,如
表1-1所示)
参数7:type 像素数据的数据类型(GL_UNSIGNED_BYTE,每个颜色分量都是一个8位无符号整数)
参数8:pixels 指向图像数据的指针

名称 象素数据类型
GL_INDEX 单个颜色索引
GL_RGB 先是红色分量,再是绿色分量,然后是蓝色分量
GL_RED 单个红色分量
GL_GREEN 单个绿色分量
GL_BLUE 单个蓝色分量
GL_ALPHA 单个Alpha值
GL_LUMINANCE_ALPHA 先是亮度分量,然后是Alpha值
GL_STENCIL_INDEX 单个的模板索引
GL_DEPTH_COMPONENT 单个深度分量
表1-1 函数glReadPixels()及glDrawPixels()的象素格式
参考:https://blog.csdn.net/woaicide/article/details/50764416

5:更新纹理

1) void glTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels) OPENGL_DEPRECATED(10.0, 10.14);

2) void glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) OPENGL_DEPRECATED(10.0, 10.14);

3) void glTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels) OPENGL_DEPRECATED(10.0, 10.14);

6:插入替换纹理

1) void glCopyTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) OPENGL_DEPRECATED(10.0, 10.14);

2) void glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) OPENGL_DEPRECATED(10.0, 10.14);

3) void glCopyTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) OPENGL_DEPRECATED(10.0, 10.14);

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

未完待续

相关文章

  • 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 学习系列---纹理

    原文链接:https://glumes.com/post/opengl/opengl-tutorial-textu...

  • OpenGL学习之纹理

    纹理只是一种能够应用到场景中的三角形上的图像数据。它经过过滤的纹理单元(texel,相当于基于纹理的像素)填充到实...

网友评论

      本文标题:OpenGL纹理学习

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