私は webgl が初めてで、この奇妙な問題に悩まされています。
テクスチャを読み込んで、キャンバスの背景として描画しようとしています。背景を一度だけ描く必要があります。したがって、論理的には、これが完全なコードの問題のスニペットである場合にのみ、関数 drawBackground() を呼び出す必要があるだけです。ここでソースを表示できます http://www.csupomona.edu/~lannguyen/WebGl%20Project/bg.html
function webGLStart() {
var canvas = document.getElementById("lesson05-canvas");
initGL(canvas);
initShaders();
initBuffers();
initTexture();
gl.clearColor(0.0, 0.0, 0.0, 1.0);
gl.enable(gl.DEPTH_TEST);
drawBackground();
}
上記のコードを実行すると、機能しません。キャンバスが真っ黒になりました。私の drawBackground 関数が正常に動作すると仮定します。
function tick() {
requestAnimFrame(tick);
drawBackground();
}
function webGLStart() {
var canvas = document.getElementById("lesson05-canvas");
initGL(canvas);
initShaders();
initBuffers();
initTexture();
gl.clearColor(0.0, 0.0, 0.0, 1.0);
gl.enable(gl.DEPTH_TEST);
tick();
}
これを行うと機能しますが、tick と requestAnimateFrame(tick) を呼び出さなければならない理由がわかりません。これは私には再帰のように見えます。しかし、一度描きたいだけなら、なぜそれを絶えず描く必要があるのか わかりません。
どんな助けや説明も素晴らしいでしょう。
ありがとう