나는 here을 읽고 있습니다. initBuffers
함수는 버퍼에 그릴 필요가있는 객체의 정점을 저장하는 데 사용됩니다.WebGl에서 런타임 동안 다양한 크기의 다양한 모양을 그리는 방법은 무엇입니까?
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
과 같은 버퍼를 유지해야 할 것인가? 그리고 그것은 초기화되어야합니다 오른쪽?
새로운 도형에 대한 새로운 버퍼 객체는 필수 항목입니까?
버튼을 사용하여 런타임 중에 모든 종류의 도형을 만들 수있는 시스템을 만들 계획입니다. 그래서이 문제에 대한 해결책이 있습니까? 런타임 중에 새 버퍼를 만드는 방법은 무엇입니까? 공통적 인 기존 솔루션이 있습니까?
버퍼 객체의 배열을 생성하면 성능이 저하 될 수 있습니까?
안녕하세요. 모양을 부여하는 객체의 꼭지점을 저장하는 버퍼 객체의 배열을 만들어 원하는대로 만들 수 있습니다. 나는 해당 객체의 좌표를 저장하는 또 다른'array'를 만들었습니다. 그래서 무언가를 칠할 필요가있을 때, 두번째'array'가 좌표로 변환하는데 사용될 것입니다. 첫 번째 배열의 모양이 사용됩니다. 이것은 성능을 저해하는 방법입니까? 동일한 작업을 수행하는 더 좋은 방법이 있습니까? – batman