我是 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),这对我来说就像递归。但如果我只想画一次,我不明白为什么我需要不断地画它。
任何帮助或解释都会很棒。
谢谢