我在OSX上的Safari中启用了WebGL的问题。我可以将图像加载到纹理中,但是,每当我尝试在某些操作后重绘时纹理变为黑色。 Chrome或Firefox中不会出现此问题。我已经在Safari 5.1.9和6.0.4上进行了测试。这是一个显示问题的小提琴。
纹理将正确加载,但在按下“向左”或“向右”按钮后,它将变为黑色。
导致问题的代码段:
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([x1, y1, x2, y1, x1, y2, x1, y2, x2, y1, x2, y2]), gl.STATIC_DRAW);
gl.drawArrays(gl.TRIANGLES, 0, 6);
答案 0 :(得分:0)
纹理需要在每次绘制操作之前绑定。下面是更新的draw(...)函数:
function draw(gl, image, x, y) {
gl.bindTexture(gl.TEXTURE_2D, texture);
setRectangle(gl, x, y, image.width, image.height);
gl.drawArrays(gl.TRIANGLES, 0, 6);
}
我用更新后的代码更新了小提琴。
答案 1 :(得分:0)
这是Safari(6.0.4)中的一个错误
如果您只想要一个解决方案,请重新绑定纹理。否则在他们正式发布WebGL之前忽略Safari。 Safari未能通过大量的一致性测试,并且还没有准备好运行WebGL,但却存在许多微妙的问题。至少从Safari 6.0.4版开始