跳到主要内容

高清屏与布局

canvas.width / canvas.height 是 backing store 申请值。WebGL 真正的渲染目标尺寸是 drawingBufferWidth / drawingBufferHeight:实现可以给你一块更小的缓冲。CSS 宽高是布局。三套脱节,高分屏发糊,viewport 裁错,命中全偏。

用户空间约定与 Canvas DPR 相同:1 单位 = 1 CSS 像素。差别是 viewport 和 readPixels 跟 drawing buffer,不跟 clientWidth

文档清单

文档解决的问题
DPR 与 drawingBuffercss × dpr、viewport、ResizeObserver、drawing buffer 被缩小

这是 L2 硬门槛。03 的指针→NDC、08 的导出,都假设 resize 之后 viewport 已用 drawingBufferWidth