在OSX上的Safari中,WebGL纹理变黑

时间:2013-05-07 15:28:30

标签: html5 macos safari webgl

我在OSX上的Safari中启用了WebGL的问题。我可以将图像加载到纹理中,但是,每当我尝试在某些操作后重绘时纹理变为黑色。 Chrome或Firefox中不会出现此问题。我已经在Safari 5.1.9和6.0.4上进行了测试。这是一个显示问题的小提琴。

http://jsfiddle.net/LTz37/1/

纹理将正确加载,但在按下“向左”或“向右”按钮后,它将变为黑色。

导致问题的代码段:

 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);

2 个答案:

答案 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)中的一个错误

这是测试https://www.khronos.org/registry/webgl/sdk/tests/conformance/state/state-uneffected-after-compositing.html

如果您只想要一个解决方案,请重新绑定纹理。否则在他们正式发布WebGL之前忽略Safari。 Safari未能通过大量的一致性测试,并且还没有准备好运行WebGL,但却存在许多微妙的问题。至少从Safari 6.0.4版开始