WebGL 纹理压缩 crunch

1、WebGL支持将压缩过的纹理传入到显卡,显卡自带解压功能,这就减少了传输数据量,加快纹理传输到显卡;

2、该功能依赖于硬件支持,WebGL本身并不限制要支持哪种格式,截止到落笔之时,这些支持都是通过扩展(extension)来实现,如WEBGL_compressed_texture_s3tc,在使用压缩纹理之前,要先查询硬件支持的扩展都有哪些,这里有个网站可以检测;

3、WegGL不提供压缩和解压方法,用户要提前把纹理压缩好,然后通过gl接口传入显卡;

4、类似于JPEG、PNG这种压缩格式,和压缩纹理的压缩并不是一回事,前者在传入显卡之前需要完全解压,这一步骤要在cpu里进行,因此会消耗时间,而后者是专门针对硬件做的压缩,直接传入硬件-显卡;

5、手机上和PC上常见的压缩格式不同,PC上用的最广的格式为DXT系列,iOS上支持PVRTC;DXT有很多变种,如DXT1/DXT3/DXT5,详见说明

6、DXT格式的纹理常以.dds文件存储,可以借助一些工具,比如DDS Converter将JPEG、PNG等格式处理成.dds文件,文件包含了压缩过的纹理数据和一些图片信息,浏览器原生不支持解析,要自己解析,Three.js提供了一个DDSLoader实现了解析加载功能;

7、使用压缩纹理的时候要用gl.compressedTexImage2D方法了;

8、使用DXT格式进行压缩后的数据量一般是比JPEG格式的要大一点(这里的压缩并不是一味的减少体积,更多的是为了显卡能更好的取样),因此就有了crunch,这个库是在DXT基础之上再进行压缩,以达到减小体积的目的,最终结果可能比JPEG格式还要小,crunch可以直接将JPEG、PNG等格式图片压缩处理成为.CRN文件,文件包含了压缩过的DXT格式的数据,要想在程序里使用.CRN文件,第一步需要先解压成为DXT数据,然后传到显卡,解压过程crnlib(和crunch一回事)提供的代码实现,可以参照github上的说明,把c++代码转换为wasm,就可以在浏览器端调用;



作者:百思不得Ting姐
链接:https://www.jianshu.com/p/b0d11dc79196
来源:简书
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WebGL是一种在浏览器中实现3D图形渲染的技术,它允许开发者使用JavaScriptWebGL API创建和显示3D场景。加载ktx纹理是使用WebGL加载3D纹理的一种方式。 KTX纹理是一种特殊的3D纹理格式,它被广泛用于游戏开发和3D渲染。这种格式的纹理文件通常使用.ktx后缀,并且可以在大多数现代图形处理器(GPU)上以高效的方式渲染。 要使用WebGL加载ktx纹理,你需要执行以下步骤: 1. 确保你已经安装了适当的WebGL和OpenGL库,例如Three.js或GLGE。这些库提供了用于加载和渲染3D纹理的API。 2. 在你的代码中,使用库提供的API加载ktx纹理文件。通常,你需要使用库提供的函数来读取文件并将其转换为可在WebGL中使用的数据格式。 3. 将加载的纹理数据传递给WebGL上下文的纹理对象。这可以通过调用库中的相关函数来完成,该函数将纹理数据分配给纹理对象,并将其绑定到WebGL纹理单元中。 4. 在渲染循环中,将已绑定的纹理对象传递给着色器程序,以便在3D场景中使用。 需要注意的是,加载ktx纹理可能需要特定的库和环境支持。不同的库可能会有不同的API和语法,因此你需要查阅相关文档以了解如何正确加载和使用ktx纹理。 总的来说,使用WebGL加载ktx纹理是一个相对复杂的过程,需要一定的3D编程和图形处理知识。如果你不熟悉这些概念,建议查阅相关文档和教程以获取更详细的指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值