持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第19天,点击查看活动详情
- 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
压缩纹理
上一篇,我们总结整理了,隧道的坐标计算过程,今天,我们来看一下 压缩纹理的相关内容:
通用压缩纹理格式
通用的压缩纹理格式及其内容见下表:
| 压缩格式 | 基本内部格式 |
|---|---|
| GL_COMPRESSED_RGB | GL_RGB |
| GL_COMPRESSED_RGBA | GL_RGBA |
| GL_COMPRESSED_SRGB | GL=RGB |
| GL_COMPRESSED_SRGB_ALPHA | GL_RGBA |
| GL_COMPRESSED_RED | GL_RED |
| GL_COMPRESSED_RG | GL_RG |
判断压缩 与 选择压缩方式
我们可以通过 glHint 、glint函数 来设置 压缩纹理格式, 可以选择 最快、最优或者自行选择的算法方式来进行格式的压缩。
//根据选择的压缩纹理格式,选择最快、最优、自行选择的算法方式选择压缩格式。
glHint (GI TEXTURE_ COMPRESSION_ HINT,GI FASTEST);
glint (GL_TEXTURE_ COMPRESSION HINT, GL_NICEST) ;
glint (GL_ TEXTURE_ COMPRESSION HINT, GL_DONT_ CARE) ;
加载压缩纹理
家在纹理我们使用 glCompressedTexImage1D、glCompressedlexImage2D、glCompressedlexImage3D 三个函数方法来加载 压缩纹理。
void glCompressedTexImage1D (GLenum target, GLint level, GLenum internalFormat, GLsizei
width, GLint border, Glsizei imageSize, void *data) ;
void glCompressedlexImage2D (GLenum target, GLint level, GLenum internalFormat, GLsizei
width, GLint heigth, GLint border, GLsizei imageSize, void *data) ;
void glCompressedlexImage3D (GLenum target, GLint level, GLenum internalFormat, GLsizei
width, GLsizei heigth, GLsizei depth, GLint border, GLsizei imageSize, void *data) ;
参数内容解释如下:
- target :
GI_TEXTURE_1D、CI TEXTURE 2D、GI IEXTURE 3D。 - Level:指定所加载的mip贴图层次。一般我们都把这个参数设置为0。
- internalformat:每个纹理单元中存储多少颜色成分。
- wiath、height、depth参数:指加载纹理的宽度、高度、深度。一=注意!二=这些值必须是2的整数次方。(这是因为旧版本上的遗留下的一个要求。当然现在已经可以支持不是2的整数次方。但是开发者们还是习惯使用以2的整数次方参数。)
- border参数:允许为纹理贴图指定一个边界宽度。
- format、type、data参数:与我们在讲g1DrawPixels函数对于的参数相同。
glGetTexLevelParameter函数提取的压缩纹理格式
提取的压缩纹理格式如下表:
| 参数 | 返回 |
|---|---|
| GL_TEXTURE_COMPRESSED | 如果纹理被压缩,返回1,否则返回0 |
| GL_TEXTURE_COMPRESSED_IMAGE_SIZE | 压缩后的纹理的大小(以字节为单位) |
| GL_TEXTURE_ INTERNAL_FORMAT | 所使用的压缩格式 |
| GL_NUM COMPRESSED_TEXTURE FORMATS | 受支持的压缩纹理格式数量 |
| GL_COMPRESSED_TEXTURE_FORMATS | 一个包含了一些常量值的数组,每个常量值对应于一种受支持的压缩纹理格式 |
| GL_TEXTURE_COMPRESSION_HINT | 压缩纹理提示的值 (GL/NICEST/GL FASTEST) |
GL_EXT_texture_compression_s3tc压缩格式
其中 压缩格式内容如下表:
| 格式 | 描述 |
|---|---|
| GL_COMPRESSED_GB_S3TC_DXT1 | RGB数据被压缩,alpha值始终是1.0 |
| GL_COMPRESSED_GBA_S3TC_DXT1 | RGBA数据被压缩,alpha值返回1.0或者0.0 |
| GL_COMPRESSED_GAB_S3TC_DXT3 | RGB值被压缩,alpha值用4位存储 |
| GL_COMPRESSED_GBA_SETC_DXT5 | RGB数据被压缩,alpha值是一些8位值的加权平均值 |