持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第16天,点击查看活动详情
- Swift Optional
- Swift Enum
- iOS开发 做一个三角形
- Swfit 指针类型
- Swift 属性(下)
- Swift 属性
- Swift 小结
- Swift 类与结构体(下)
- Swift 类的生命周期
- Swift 类的初始化器
- Swift 类与结构体
- OpenGL 压缩纹理
- OpenGL 隧道坐标计算
- 0penGL 像素格式及数据类型
- OpenGL 纹理对象
- OpenGL 纹理
- OpenGL 模型变化
- OpenGL 视图
- OpenGL 矩阵
- OpenGL 向量
- OpenGL 颜色混合
- OpenGL 深度测试的潜在风险
- OpenGL 浅析深度测试
- OpenGL 浅析隐藏面消除
- OpenGL 图元连接方式
- 记WKWebView与HTML完成交互两三事
- OpenGL 渲染流程图解析
- OpenGL 控制你的正方形
- OpenGL 专业名词解释
- OpenGL 环境搭建 - MacOS
上一片,我们整理了纹理内容,今天,我们来看看纹理对象的内容。
纹理对象
使用函数分配纹理对象 ; 指定纹理对象的数量 和 指针(指针指向一个无符号整形数组,由纹理对象标识符填充)
void glGenTextures (GLsizei n, GLuint * textures);
绑定纹理状态; 参数target:GI_TEXTURE_1D、GI TEXTURE_2D、CI_TEXTURE_3D; 参数texture:需要绑定的纹理对象
void glBindTexture (GLenum target, GLunit texture);
删除绑定纹理对象;纹理对象 以及 纹理对象指针(指针指向一个无符号整形数组,由纹理对象标识符填充)。
void glDeleterextures (GLsizei n.GLuint *textures);
测试纹理对象是否有效;如果texture是一个已经分配空问的纹理对象,那么这个函数会返回GL_IRUE,否则会返回GL_FAISE。
GLboolean giIsTexture (GLuint texture);
设置纹理参数
glTexParameterf (GLenum target, GLenum pname, GLFloat param) ;
glTexParameteri (GLenum target, GLenum pname, GLint param) ;
glTexParameterfv (GLenum target, GLenum pname, GLFloat*param);
glTexParameteriv (GLenum target, GLenum pname, GLint *param) ;
参数1:target,指定这些参数将要应用在那个纹理模式上,比如GL_TEXTURE_1D、GL_工EXTURE_2D、GL_TEXTURE_3D;
参数2:pname,指定需要设置那个纹理参数;
参数3:param,设定特定的纹理参数的值;
设置过滤方式
纹理过滤方式比较
纹理参数设置函数
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR)
纹理放大时,使用线性过滤。
glIexParameteri(GL_TEXTURE_2D, GL_TEXTURE MAG _FILIER, GL _NEAREST);
glTexParameteri(GL TEXTURE 2D,GL TEXTURE MIN FILTER,GL NEAREST);
glTexParameteri (GL TEXTURE 2D,GL TEXTURE MAG FILTER, GL LINEAR);
glTexParameteri (GL TEXTURE 2D,GL TEXTURE MIN FILTER, GL LINEAR);
设置环绕方式
| 环绕方式 | 描述 |
|---|---|
| GL_REPEAT | 对纹理的默认行为。重复纹理图條。 |
| GL_MIRRORED_REPEAT | 和GL REPEAT一样,但每次重复图片是镜像放置的。 |
| GL_CLAMP_TO_EDGE | 纹理坐标会被约束在0到1之间,超出的部分会重复纹理坐标的边缘,产生一种边缘被拉伸的效果。 |
| GL_CLAMP_TO_BORDER | 超出的坐标为用户指定的边缘颜色。 |
当纹理坐标超出默认范围时,每个选项都有不同的视觉效果输出。我们来看看这些纹理图像的例子:
设置环绕方式
参数1:GI_IEXIURE_1D、 GI_IEXTURE_2D、GL_TEXTURE_3D
参数2:GLTEXTURE_ WRAP_S、GI_TEXTURE_卫、GI_卫EXTURE_R,针对s,t,r坐标
参数3:GI_REPEAT、GL_CIAMP、GL_CIAMP_TO_EDGE、GICLAMP_TO_ BORDER
GI_REPEAT:0penGL 在纹理坐标超过1.0的方向上对纹理进行重复;
GI_CIAMP:所需的纹理单元取自纹理边界或IEXTURE BORDER COLOR.
GI_CIAMPTO EDGE环绕模式强制对范围之外的纹理坐标沿着合法的纹理单元的最后一行或者最后列来进行采样。
GICLAMP_TO_BORDER:在纹理坐标在0.0到1•0范国之外的只使用边界纹理单元。边界纹理单元是作为国绕基本图像的额外的行和列,并与基本纹理图像一起加载的。
glTextParameteri (GL_TEXTURE 2D, GL TEXTURE_WRAR S, GL_CLAMP_TO_EDGE) ;
glTextParameteri (GL_TEXTURE 2D,GL TEXTURE_WRAR T, GL_CLAMP_TO_EDGE) ;