2017-10-15 7 views
0

Je tente de créer un cadre filaire généralisé. Je continue à obtenir cette erreur:WebGL: GL ERREUR: GL_INVALID_OPERATION: glDrawElements: tentative d'accès à des vertices hors plage dans l'attribut 0

GL ERROR :GL_INVALID_OPERATION : glDrawElements: attempt to access out of range vertices in attribute 0 

J'installe mes tampons et appelant DrawElements() comme ceci:

 // Create a buffer object 
      var vertexBuffer = gl.createBuffer(); 
      var indexBuffer = gl.createBuffer(); 

      gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer); 
      gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indexBuffer); 

      gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW); 
      gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(indexes), gl.STATIC_DRAW); 

     // Draw 
      gl.drawElements(gl.LINE_STRIP, indexes.length, gl.UNSIGNED_SHORT, 0); 

(aussi, je sais « index » est pas le pluriel de l'index . il suffit d'aller avec elle)

Quand je reçois cette erreur, mes index et les sommets tableaux ressemblent à ceci:.

Vertices.length: 26 
Indexes.length: 60 

Indexes[]: 0,12,13,1,0,1,13,14,2,1,2,14,15,3,2,3,15,16,4,3,4,16,17,5,4,5,17,18,6,5,6,18,19,7,6,7,19,20,8,7,8,20,21,9,8,9,21,22,10,9,10,22,23,11,10,11,23,24,12,11 



Vertices[]: 
-0.7149857878684998,0.7199857831001282,0.20000000298023224, 
-0.7820903062820435,0.6458441019058228,0.17320507764816284, 
-0.8491948246955872,0.5717024207115173,0.17320507764816284, 
-0.9162993431091309,0.4975607395172119,0.17320507764816284, 
-0.9834038615226746,0.4234190583229065,0.17320507764816284, 
-1.0505083799362183,0.3492773771286011,0.17320507764816284, 
-1.1176128387451172,0.27513569593429565,0.17320507764816284, 
-1.1847172975540161,0.20099402964115143,0.17320507764816284, 
-1.251821756362915,0.1268523633480072,0.17320507764816284, 
-1.318926215171814,0.05271069332957268,0.17320507764816284, 
-1.386030673980713,-0.021430976688861847,0.17320507764816284, 
-1.4531351327896118,-0.09557265043258667,0.17320507764816284, 
-1.5202395915985107,-0.1697143167257309,0.17320507764816284, 
0.7600141763687134,-0.6150141954421997,0.20000000298023224, 
0.6929096579551697,-0.6891558766365051,0.17320507764816284, 
0.625805139541626,-0.7632975578308105,0.17320507764816284, 
0.5587006211280823,-0.837439239025116,0.17320507764816284, 
0.49159613251686096,-0.9115809202194214,0.17320507764816284, 
0.42449164390563965,-0.9857226014137268,0.17320507764816284, 
0.35738715529441833,-1.0598642826080322,0.17320507764816284, 
0.290282666683197,-1.1340059041976929,0.17320507764816284, 
0.2231781780719757,-1.2081475257873535,0.17320507764816284, 
0.1560736894607544,-1.2822891473770142,0.17320507764816284, 
0.08896919339895248,-1.3564307689666748,0.17320507764816284, 
0.021864697337150574,-1.4305723905563354,0.17320507764816284, 
-0.04523979872465134,-1.504714012145996,0.17320507764816284 

Autant que je sache, je ne devrais pas faire référence à un vertex hors limites, donc je ne suis pas sûr de savoir pourquoi cette erreur fait surface. Est-ce que je mésusage le tampon? Je suis encore relativement nouveau à WebGL, donc tout pointeur dans la bonne direction serait grandement apprécié.

+0

Comment ajouter vos sommets aux index? c'est vous mauvais. –

+0

Ne devrait pas vertices.length == 26 * 3? –

+1

Où est la configuration de votre pointeur d'attribut vertex? –

Répondre

1

Essayez avec pointsArray http://www.eng.utah.edu/~cs4600/lectures/Wk11_TextureMapping2.pdf

var Indexes = [0,12,13,1,0,1,13,14,2,1,2,14,15,3,2,3,15,16,4,3,4,16,17,5,4,5,17,18,6,5,6,18,19,7,6,7,19,20,8,7,8,20,21,9,8,9,21,22,10,9,10,22,23,11,10,11,23,24,12,11]; 

var Vertices[-0.7149857878684998,0.7199857831001282,0.20000000298023224, 
-0.7820903062820435,0.6458441019058228,0.17320507764816284, 
-0.8491948246955872,0.5717024207115173,0.17320507764816284, 
-0.9162993431091309,0.4975607395172119,0.17320507764816284, 
-0.9834038615226746,0.4234190583229065,0.17320507764816284, 
-1.0505083799362183,0.3492773771286011,0.17320507764816284, 
-1.1176128387451172,0.27513569593429565,0.17320507764816284, 
-1.1847172975540161,0.20099402964115143,0.17320507764816284, 
-1.251821756362915,0.1268523633480072,0.17320507764816284, 
-1.318926215171814,0.05271069332957268,0.17320507764816284, 
-1.386030673980713,-0.021430976688861847,0.17320507764816284, 
-1.4531351327896118,-0.09557265043258667,0.17320507764816284, 
-1.5202395915985107,-0.1697143167257309,0.17320507764816284, 
0.7600141763687134,-0.6150141954421997,0.20000000298023224, 
0.6929096579551697,-0.6891558766365051,0.17320507764816284, 
0.625805139541626,-0.7632975578308105,0.17320507764816284, 
0.5587006211280823,-0.837439239025116,0.17320507764816284, 
0.49159613251686096,-0.9115809202194214,0.17320507764816284, 
0.42449164390563965,-0.9857226014137268,0.17320507764816284, 
0.35738715529441833,-1.0598642826080322,0.17320507764816284, 
0.290282666683197,-1.1340059041976929,0.17320507764816284, 
0.2231781780719757,-1.2081475257873535,0.17320507764816284, 
0.1560736894607544,-1.2822891473770142,0.17320507764816284, 
0.08896919339895248,-1.3564307689666748,0.17320507764816284, 
0.021864697337150574,-1.4305723905563354,0.17320507764816284, 
-0.04523979872465134,-1.504714012145996,0.17320507764816284]; 
... 
indexes.push(vertices[x]); 
gl.drawElements(gl.LINE_STRIP, pointsArray.length, gl.UNSIGNED_SHORT, 0);