此JScript / WebGL代码段应为画布黄色。
gl.clearColor(1.0, 1.0, 0.5, 1.0);
gl.clear(gl.COLOR_BUFFER_BIT);
它在FF和Chrome中都是如此。然而IE 11似乎在感觉就像调用clear(),而不仅仅是交换缓冲区(?!)。画布背景很多时候都是白色,导致严重的闪烁。在页面加载时,它根本不会调用clear()。
是否可以强制清除()?如果我认为这是错误的话,我是否理解OpenGL规范?
*虽然创建具有属性{preserveDrawingBuffer:true}的上下文可以缓解问题,但它会降低性能并且无法解决初始页面加载问题......这里是一个片段。
var canvas = document.getElementById("cnv");
var gl = canvas.getContext("webgl") ||
canvas.getContext("experimental-webgl", { preserveDrawingBuffer: true });
gl.clearColor(1, 1, 0.5, 1);
gl.clear(gl.COLOR_BUFFER_BIT);
function refresh() {
gl.clearColor(Math.random(), Math.random(), Math.random(), 1);
gl.clear(gl.COLOR_BUFFER_BIT);
}
var button = document.getElementById("refresh");
button.onclick = refresh;

<canvas id="cnv" width="150" height="50" style="border-style: solid; border-width: 1px;"></canvas>
<br>
<button id="refresh">refresh!</button>
&#13;