どのようにwebglにサブバッファを持つバッファを描画できますか? 例として、行を作成する点が異なりますが、接続したくない部分があります。サブバッファを含むバッファを描画するwebgl
///Example code
var lines = [
[0, 0, 0, 1, 1, 1],
[2, 2, 2, 3, 3, 3],
[5, 5, 5, 7, 7, 7]
];
var colores = [
[10, 43, 100, 1, ],
[0, 100, 0, 1],
[100, 100, 0, 1]
]
for (var i = 0; i < lines.length; i++) {
lineVertexPositionBuffer[i] = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, lineVertexPositionBuffer[i]);
lineVertexPositionBuffer[i].itemSize = 3;
lineVertexPositionBuffer[i].numItems = line[i].length/3;
colorVertexBuffer[i] = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, colorVertexBuffer[i]);
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(colores[i]), gl.DYNAMIC_DRAW);
colorVertexBuffer[i].itemSize = 4;
colorVertexBuffer[i].numItems = colores[i].length/4;
}
function DrawScene() {
for (var i = 0; i < lineVertexPositionBuffer.length; i++) {
gl.bindBuffer(gl.ARRAY_BUFFER, colorVertexBuffer[i]);
gl.vertexAttribPointer(currentProgram.textureCoordAttribute, colorVertexBuffer[i].itemSize, gl.FLOAT, false, 0, 0);
gl.bindBuffer(gl.ARRAY_BUFFER, null);
gl.bindBuffer(gl.ARRAY_BUFFER, lineVertexPositionBuffer[i]);
gl.vertexAttribPointer(currentProgram.vertexPositionAttribute, 3, gl.FLOAT, false, 0, 0);
gl.drawArrays(gl.LINE_STRIP, 0, lineVertexPositionBuffer[i].numItems);
gl.bindBuffer(gl.ARRAY_BUFFER, null);
}
}
大丈夫ですが、私はそれが動的である必要があります。行が変更される可能性があるため、追加または削除してください。 – Julio
@Julio BufferSubDataでインデックスバッファと頂点バッファの両方を変更できます。しかし、インデックスバッファは頂点バッファよりも小さいので、新しいバッファを割り当てて完全に満たすことは、実行時に頂点を変更するよりも安いです。しかし、私はあなたの質問を間違って理解しましたか? –