WebGL GL ERREUR :GL_INVALID_OPERATION : glDrawElements: tentative d'accès à la hors de portée des sommets dans l'attribut 1

Je suis d'essayer de fixer un pré-existants bug dans le code qui est basé sur THREE.js rev 49 avec quelques shaders.

Je suis un total de WebGL newb, donc je n'ai pas été en mesure de faire beaucoup de têtes ou queues d'autres réponses car il semble qu'ils assument beaucoup plus de connaissances que j'ai eu. Je serais super reconnaissante de même des indications sur ce qu'il faut chercher! 🙂 Le résultat final de ce code est de dessiner une boîte translucide fil de fer et de peindre les visages translucide textures.

L'erreur est:

[.WebGLRenderingContext]GL ERROR :GL_INVALID_OPERATION : glDrawElements: attempt to access out of range vertices in attribute 1

J'ai tracé la question à un particulier _gl.drawElements( _gl.TRIANGLES, geometryGroup.__webglFaceCount, _gl.UNSIGNED_SHORT, 0 ); dans TROIS.WebGLRenderer.renderBuffer.

Ici est un extrait de l'appel de code:

scene.overrideMaterial = depthMaterial; //shaders below
var ctx = renderer.getContext(); //renderer is a THREE.WebGLRenderer
ctx.disable(ctx.BLEND);
//renderTarget is a THREE.WebGLRenderTarget, _camera, scene is obvious
renderer.render(scene, _camera, renderTarget, true); //error occurs here

Voici les shaders:

    uniforms: {},

    vertexShader: [
        "varying vec3 vNormal;",

        "void main() {",

            "vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );",
            "vNormal = normalMatrix * normal;",

            "gl_Position = projectionMatrix * mvPosition;",

        "}"
    ].join("\n"),

    fragmentShader: [
        "vec4 pack_depth( const in highp float depth ) {",

            "const highp vec4 bit_shift = vec4( 256.0, 256.0*256.0, 256.0*256.0*256.0, 256.0*256.0*256.0*256.0 );",
            "vec4 res = depth * bit_shift;",
            "res.x = min(res.x + 1.0, 255.0);",
            "res = fract(floor(res) /256.0);",
            "return res;",

        "}",

        "void main() {",
            "gl_FragData[0] = pack_depth( gl_FragCoord.z );",
        "}"
    ].join("\n")

Merci pour votre aide!

OriginalL'auteur SapphireSun | 2014-01-18