私はここを読んでいます。このinitBuffers
関数は、描画する必要があるオブジェクトの頂点を Buffer に格納するために使用されます。
var triangleVertexPositionBuffer;
var triangleVertexColorBuffer;
function initBuffers() {
triangleVertexPositionBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, triangleVertexPositionBuffer);
var vertices = [
0.0, 1.0, 0.0,
-1.0, -1.0, 0.0,
1.0, -1.0, 0.0
];
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW);
triangleVertexPositionBuffer.itemSize = 3;
triangleVertexPositionBuffer.numItems = 3;
triangleVertexColorBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, triangleVertexColorBuffer);
var colors = [
1.0, 0.0, 0.0, 1.0,
0.0, 1.0, 0.0, 1.0,
0.0, 0.0, 1.0, 1.0,
];
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(colors), gl.STATIC_DRAW);
triangleVertexColorBuffer.itemSize = 4;
triangleVertexColorBuffer.numItems = 3;
}
これは、三角形に対して定義されたある種の「形状」です。さて、すべてのタイプとサイズの形状が必要な場合は、形状ごとにバッファを保持する必要がありますよね? triangleVertexPositionBuffer
そして、初期化する必要がありますよね?
すべての新しい形状の新しいバッファ オブジェクトは必須ですか?
ボタンを使用して、実行時にあらゆる種類の形状を作成できるシステムを作成する予定です。この問題の解決策はありますか?実行時に新しいバッファを作成するにはどうすればよいですか? 共通の既存のソリューションはありますか?
バッファ オブジェクトの配列を作成すると、パフォーマンスが低下しますか?