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 に答える