带你读《2022技术人的百宝黑皮书》——内存优化: 纹理压缩技术(4)

简介: 带你读《2022技术人的百宝黑皮书》——内存优化: 纹理压缩技术(4)

带你读《2022技术人的百宝黑皮书》——内存优化: 纹理压缩技术(3)https://developer.aliyun.com/article/1340978?groupCode=taobaotech

使用压缩纹理(WebGL)

在 WebGI 上使用纹理压缩主要有如下步骤

1.下载纹理压缩素材;

2.解析ktx文件;

3.判断设备支持的纹理压缩格式;

4.通过getExtension获取纹理压缩扩展:

5.上传纹理压缩数据到GPU;

其中上传纹理主要指compressedTexlmage2D、compressedTexlmage3D两个API,其入参均可以从KTX文件中拿

 

var ext = gl.getExtension('WEBGL_compressed_texture_etc');
var texture = gl.createTexture(); gl.bindTexture(gl.TEXTURE_2D, texture);
gl.compressedTexImage2D(gl.TEXTURE_2D, 0, ext.COMPRESSED_RGBA8_ETC2_EAC, 512, 512,
0, textureData);


兼容性情况

 

  1. Android平台 Android平台由于机型、厂商众 纹理压缩的支持况较为复 EC1支持的最为广但是由千ETC1不支持Alpha 导致其使用场景有 ETC2罢盖度也挺高但是需要启OpenGL    es   3.x; google play Andra高端机型ASTC的支持度覆盖度77以上(具体GPU型号 高通骁龙415及以上(2015) , ARM Mali T624(2012)及以 NVIDIA egra k1(2014)及以上)。
  2. iOS平台 iOS平台PVRC格式支持最广泛苹果也推荐使用此格式2017芯片发布后开始支持(ETC/ETC2) 格式2014 AB芯片及以上开始支持ASTC格式

image.png

 

 

综上Andro口平台选用ETC + ASTC, iOS平台高版本使用ASTC 、低版本PVRTC兜底即可覆盖所有设备。开发者运行时可以 诵过API glgetString(GL_E XTENS IONS) 获取当前设备支持的 压缩纹理格式 WebGL 通过getSupportedExtensions()API获得相同信患。

 

带你读《2022技术人的百宝黑皮书》——内存优化: 纹理压缩技术(5)https://developer.aliyun.com/article/1340976?groupCode=taobaotech

相关文章
|
12天前
|
Web App开发 缓存 前端开发
【Flutter前端技术开发专栏】Flutter中的性能优化与内存管理
【4月更文挑战第30天】本文探讨了Flutter应用的性能优化和内存管理。关键点包括:减少布局重绘(使用`const`构造函数和最小化依赖),选择合适的动画实现,懒加载和按需加载以提升性能。同时,强调了避免内存泄漏和优化内存使用,利用Flutter提供的性能分析工具。实践案例展示了如何优化ListView,包括使用`ListView.builder`和缓存策略。通过这些方法,开发者可以提升应用的响应性、流畅性和稳定性。
【Flutter前端技术开发专栏】Flutter中的性能优化与内存管理
|
2月前
|
缓存 算法 安全
【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍(二)
【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍
22 0
|
2月前
|
缓存 Java C#
【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍(一)
【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍
91 0
|
11天前
|
机器学习/深度学习 自动驾驶 安全
深入理解操作系统内存管理:策略与实现基于深度学习的图像识别技术在自动驾驶系统中的应用
【4月更文挑战第30天】 在现代计算机系统中,操作系统的内存管理是确保系统高效、稳定运行的关键组成部分。本文将深入探讨操作系统中内存管理的多种策略及其实现机制,包括但不限于分页、分段和段页式结合等技术。我们将剖析内存分配的原理,讨论虚拟内存技术的实现以及它如何提供更大的地址空间并允许内存的交换。同时,我们还会涉及内存保护机制,它们是如何防止程序访问未授权的内存区域。最后,文中将对现代操作系统如Linux和Windows中的内存管理实践进行比较分析,以期给读者提供全面而深入的理解和参考。 【4月更文挑战第30天】 随着人工智能技术的飞速发展,深度学习已经
|
12天前
|
Dart 前端开发 Java
【Flutter前端技术开发专栏】Flutter中的内存泄漏检测与解决
【4月更文挑战第30天】本文探讨了Flutter应用中的内存泄漏检测与解决方法。内存泄漏影响性能和用户体验,常见原因包括全局变量、不恰当的闭包使用等。开发者可借助`observatory`工具或`dart_inspector`插件监测内存使用。解决内存泄漏的策略包括避免长期持有的全局变量、正确管理闭包、及时清理资源、妥善处理Stream和RxDart订阅、正确 disposal 动画和控制器,以及管理原生插件资源。通过这些方法,开发者能有效防止内存泄漏,优化应用性能。
【Flutter前端技术开发专栏】Flutter中的内存泄漏检测与解决
|
16天前
|
Linux
Linux rsyslog占用内存CPU过高解决办法
该文档描述了`rsyslog`占用内存过高的问题及其解决方案。
40 4
|
1月前
|
移动开发 运维 监控
掌握Linux运维利器:查看CPU和内存占用,轻松解决性能问题!
掌握Linux运维利器:查看CPU和内存占用,轻松解决性能问题!
|
1月前
|
监控 Python
【python】实现cpu/内存监控的功能(非常简单)
【python】实现cpu/内存监控的功能(非常简单)
|
1月前
|
Linux
Linux 查看进程PID和线程CPU和内存占用情况
Linux 查看进程PID和线程CPU和内存占用情况
35 0
|
1月前
|
移动开发 Linux
Linux下如何查看哪些进程占用的CPU内存资源最多
Linux下如何查看哪些进程占用的CPU内存资源最多