1

我在启用 WebGL 的 OSX 上的 Safari 中遇到问题。我可以将图像加载到纹理中,但是,每当我在某些操作后尝试重绘时,纹理就会变黑。在 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);
4

2 回答 2

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 开始

于 2013-05-08T19:30:16.130 回答
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);
}

我用注释掉的更新代码更新了小提琴。

于 2013-05-08T17:17:26.580 回答