在OpenGL中使用纹理压缩

本文详细介绍了在OpenGL中使用纹理压缩的两种主要方法:ARB纹理技术扩展和S3TC。纹理压缩能提高渲染速度,降低内存需求和磁盘存储空间。文章详细阐述了纹理压缩的步骤,包括常规压缩和S3TC DDS文件格式的使用,同时提供了相关的代码示例。
摘要由CSDN通过智能技术生成

 纹理压缩技术已经广泛应用在各种3D游戏之中,它们包括:DXTC(Direct X Texture Compress,DirectX纹理压缩,以S3TC为基础)、S3TC(S3 Texture Compress,S3纹理压缩,仅支持S3显卡)、VTC(Volume Texture Compression,体积纹理压缩)、PTC(Palletized Texture Compression,并行纹理压缩)、VQTC(Vector-Quantization Texture Compression,向量纹理压缩)、YAB NCTC(Narrow Channel Texture compression,狭窄通道纹理压缩)、FXT 1。下面,我为各位介绍OpenGL中使用纹理压缩的两种主要方法:ARB纹理技术扩展和S3TC。
一、概述

  与其它压缩技术一样,ARB可以把高分辨率纹理放入未压缩前只能存储低分辨率纹理的空间,并提供渲染管道优化,特点有:

- 增加渲染速度
- 减低纹理内存需求
- 快速纹理下载到纹理内存
- 低磁盘存储空间需求和高速磁盘存取
纹理压缩通常分为纹理生成层和运行时间层二部分,纹理生成又分成两种方法:
- 通常方法:使用GL来压缩图像,存储到磁盘
- S3TC DDS文件格式:使用ISV的S3TC压缩工具来处理图像,在GL中载入DDS文件
运行时间层的主要工作分三步:
- 从磁盘载入压缩图像
- 上载压缩图像到GL
- 不压缩动态纹理

二、具体过程

  最理想的压缩纹理技术是在游戏的开头画面预压缩所有的纹理,减少磁盘存储需要,加速纹理载入速度。下面是用两种不同的方法处理纹理位图,第一种方法使用OpenGL压缩,第二种使用直接支持OpenGL的ISV S3TC文件格式。
ARB允许未压缩的纹理通过glTexImage2D呼叫来进行纹理压缩,并设置内部格式参数。图1的上半部分为常规方式,下半部分为S3TC扩展集,基本内部格式通过压缩后将变成压缩内部格式。

1、常规压缩

  使用代理纹理可以在压缩前指示欲压缩的纹理图像,然后再以glGetTexLevelParameteriv加上$#@60;pname$#@62;到GL_TEXTURE_COMPRESSED_ARB,来检查图像是否进行适当的压缩。如果纹理已经得到正确处理,会返回一个非零参量,若是纹理压缩出错,则变回相应的基本内部格式。

  使用普通压缩内部格

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值