有关详细信息,请参阅此线程。
综上所述,鉴于以下情况:
gl = canvas.getContext('experimental-webgl');
gl.clearColor(0, 0, 0, 1);
gl.colorMask(1, 1, 1, 0);
gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
gl.enable(gl.BLEND);
...和一个标准的渲染循环:
function doRender() {
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
// render stuff, and request another frame
requestAnimationFrame(doRender);
}
...那么我想知道理论上的预期输出应该是什么。
实际上,我看到第一帧呈现好像没有颜色掩码,而第二个(和后续)帧呈现整个画布 opaque white。
请注意,alpha 级别设置为什么并不重要:即使渲染的 alpha 值非常低,第二帧也始终是立即的、完全白色的(包括未渲染到的区域)。
问题:上述操作对第一帧、第二帧和后续帧的预期结果是什么?另外,我遇到的是预期的结果,还是由于 GL 驱动程序或 WebGL 实现中的一些错误?最后,如果这是预期的结果,为什么?视频卡上实际发生了什么来产生这个结果?
系统详细信息:MacBook Pro / GeForce 320M / Snow Leopard 上的 Chrome / Firefox(两者)。