Web applications 如何使用纹理绘制背景webgl

Web applications 如何使用纹理绘制背景webgl,web-applications,webgl,Web Applications,Webgl,我是webgl的新手,我被这个奇怪的问题困扰着 我尝试加载纹理并将其绘制为画布的背景。 我只需要画一次背景。 所以从逻辑上讲,我只需要调用我的函数trackground()一次 这是问题的片段,您可以在这里查看完整代码的源代码 当我执行上面的代码时,它不起作用。我的画布变黑了。假设我的牵引杆接地功能正常工作 function tick() { requestAnimFrame(tick); drawBackground(); } functi

我是webgl的新手,我被这个奇怪的问题困扰着

我尝试加载纹理并将其绘制为画布的背景。 我只需要画一次背景。 所以从逻辑上讲,我只需要调用我的函数trackground()一次 这是问题的片段,您可以在这里查看完整代码的源代码

当我执行上面的代码时,它不起作用。我的画布变黑了。假设我的牵引杆接地功能正常工作

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),这看起来像是递归。 但如果我只想画一次,我不明白为什么我需要不断地画

任何帮助或解释都会很好


谢谢

我怀疑您在以下某些情况下对获取资源进行了一些异步调用:

initShaders();
initBuffers();
initTexture();

然后,当您仅调用一次trackground()时,某些资源的加载仍在进行中。

我怀疑您在以下某些情况下对获取资源进行了一些异步调用:

initShaders();
initBuffers();
initTexture();
然后,当您仅调用一次traffackground()时,某些资源的加载仍在进行中