【发布时间】:2012-10-14 14:51:05
【问题描述】:
我正在阅读here。
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,对吗?而且它必须被初始化正确?
每个新形状都必须要有新的缓冲区对象吗?
我计划创建一个系统,可以在运行时使用按钮创建各种形状。 那么这个问题有解决方案吗? 如何在运行时创建新的缓冲区?是否有一个通用的现有解决方案?
如果我创建一个缓冲区对象数组会影响性能吗?
【问题讨论】:
标签: javascript opengl-es webgl