GPU资源工程
GPU 程序每帧吃的是 已经上传的资源,不是 JS 数组。这一章只解决:buffer / VAO / 纹理 / FBO / shader / 实例化 / compute 怎么管,才不会把全局 gl 状态拧脏。
这一章覆盖什么
- 顶点布局与 VAO
- 纹理上传与采样
- 帧缓冲、MRT、深度
- Uniform 与编译生命周期
- 实例化与间接绘制
- Compute / GPGPU 边界
文档清单
| 文档 | 解决的问题 |
|---|---|
| 缓冲、顶点与 VAO | 热路径不要散装 bindBuffer + attribute |
| 纹理采样与上传 | mip、各向异性、尺寸上限、视频 / canvas 源 |
| 帧缓冲、MRT 与深度 | FBO 绑错、清错、多目标 |
| Uniform 与着色器编译 | 编译一次、UBO、WGSL 一句对照 |
| 实例化与间接绘制 | 万级标记为什么必须 instance buffer |
| Compute 与 GPGPU | WebGPU compute 首选;WebGL 浮点 FBO 边界 |
封装底线
- 业务层不碰「当前
ARRAY_BUFFER」。网格有 VAO,动态数据走明确的bufferSubData。 useProgram/bindVertexArray/bindFramebuffer成对出现;离开 pass 绑回默认(FBOnull)。- 着色器编译和
getUniformLocation只在创建或热更新时做。 - 丢失后资源表整表重建,见 上下文生命周期。