1
//Defining geometry
var vertices = [
+0.0,+0.0,+0.0,
+0.0,+0.0,+1.0,
-0.5,+0.0,+0.0,
+1.0,+0.0,+0.0,
-0.5,-0.5,+0.0,
+0.0,+1.0,+0.0,
+0.5,+0.5,+0.0,
+1.0,+0.0,+1.0,
+0.5,+0.0,+0.0,
+1.0,+1.0,+0.0,
-0.5,+0.5,+0.0
+1.0,+0.0,+1.0
];
indices = [3,4,0,0,2,1,5,0,1];
var VextexBuffer = webgl.createBuffer();
webgl.bindBuffer(webgl.ARRAY_BUFFER, VextexBuffer);
webgl.bufferData(webgl.ARRAY_BUFFER, new Float32Array(vertices), webgl.STATIC_DRAW);
var coord = webgl.getAttribLocation(shaderProgram,"coordinates");
webgl.vertexAttribPointer(coord, 3, webgl.FLOAT, false ,6 * 4,0);
webgl.enableVertexAttribArray(coord);
var color = webgl.getAttribLocation(shaderProgram, "color");
webgl.vertexAttribPointer(color, 3, webgl.FLOAT, false ,6 * 4,3 * 4);
webgl.enableVertexAttribArray(color);
var IndexBuffer = webgl.createBuffer();
webgl.bindBuffer(webgl.ELEMENT_ARRAY_BUFFER, IndexBuffer);
webgl.bufferData(webgl.ELEMENT_ARRAY_BUFFER, new Uint16Array(indices), webgl.STATIC_DRAW);
VertexAttribPointerメソッドでストライドを使用して、2つのVBOを使用するのではなく、頂点とカラーの両方のデータに単一のVBOを使用したいのですが、問題は私がJavaScriptのfloatのサイズを知らないことです。webglでどのようにストライドを使用しますか?
**[.CommandBufferContext]GL ERROR :GL_INVALID_OPERATION : glDrawElements:
attempt to access out of range vertices in attribute 1**
私はこの問題はであると思い
webgl.vertexAttribPointer(color, 3, webgl.FLOAT, false ,6 * 4,3 * 4);
- :: -
webgl.vertexAttribPointer(coord, 3, webgl.FLOAT, false ,6 * 4,0);
と - :だから私は今、私はこのエラーを取得しています、それは4
であると想定しました
どこに障害があるか教えてください。 感謝します。
感謝を意味し、最後の色の間にカンマを欠落していました。 –