1. 综述
其实,写到第六篇比对基本上常规的 API 就差不多比对完了(除了 GPGPU、查询方面的 API 未涉及),但是有一个细节仍然值得我开一篇比对文章进行思考、记录,那就是渲染到何处。
WebGL 的上下文对象是与 canvas 元素强关联的,没有 canvas 创建不了上下文,也就是说,WebGL 在设计之初就是拿来绘图的(的确如此),没考虑 GPU 的其它功能,后来才逐渐加入其它功能。所以说,WebGL 若不显式指定 Framebuffer,那默认就是画到 canvas 自己身上。
WebGPU 则更强调“GPU”本身,它是需要自己制定绘制目标的,也就是在通道编码器中设置的颜色附件关联的纹理对象。
本篇着重介绍 WebGPU 这一处新设计。有关 FBO 和 RBO 技术与 WebGPU 的差异我另有文章,请自行查阅。
2. WebGL 中的绘图区
把帧缓冲映射到绘图窗口,就算完成了。WebGL 需要使用 gl.viewport()
来指定绘图区的大小:
gl.