很久之前写的笔记才贴出来,在某次面试之后,面试官问: 100万个模型绘制 ,很卡,你会怎么优化?
我查询的大部分资料都是OpenGL的(太久了,没留下地址),所以我会根据自己的经验,说明下WebGL怎么做。
影响性能的因素
- CPU
- 过多的draw call(就是调用了drawElements或者是drawArrays函数,GPU就会根据渲染状态(例如材质、纹理、着色器等)和所有输入的顶点数据来进行计算,最终输出到屏幕)
- 复杂的脚本或是物理模拟
- GPU
- 顶点处理
- 过多的顶点
- 过多的逐顶点计算
- 片元处理
- 过多的片元(可能是由于分辨率造成的,也可能是由于overdraw造成的,同一个像素绘制多遍)
- 过多的逐片元计算
- 带宽
GPU虽然拥有强大的并行能力可以极快数据处理,但GPU储存有限,数据需要从外部传人,可能导致传输数据的时间远大于GPU处理的时间,所以带宽的问题也要注意下。
- 使用了尺寸很大且未压缩的纹理
- 分辨率过高的帧缓存
WebGL的渲染分析工具
- JavaScript Profiler:可以显示JS函数的执行时间
- FPS:查看Frame rate,GPU内存占用情况
- Performance:统计某一时间段的操作情况,录制各种性能指标(FPS,CPU,NET,重排重绘等)。可以通过统计报表中的Call tree找到对于的文件链接,点进去排查代码。

本文探讨了WebGL渲染性能优化的关键因素,包括CPU优化、GPU优化和带宽管理。CPU优化涉及减少draw call和复杂脚本。GPU优化主要包括顶点处理(如几何体简化、LOD技术和面剔除)和片元处理。带宽优化建议使用mipmaps和纹理压缩。文章还提到了WebGL的渲染分析工具和实用的优化技术,如批处理、实例绘制、LOD、面剔除、控制绘制顺序和减少逐片元计算。
最低0.47元/天 解锁文章
3605

被折叠的 条评论
为什么被折叠?



