【发布时间】:2014-01-21 02:33:31
【问题描述】:
我正在尝试使用 webGL 创建树形图,我似乎迷失在数组之间,我不知道出了什么问题。我也不知道如何将名称写入画布。 附:每当我使用行 context.fillText(obj2[i][2], width, height);在第二个 for 循环中,不会显示整个画布。
function initBuffers() {
var canvas = document.getElementById("webgl_canvas");
var context = canvas.getContext("2d");
var y = [];
var canvas = document.getElementById("webgl_canvas");
var canvas_area = canvas.width*canvas.height;
var obj = ([["Root", "Null", 2],
["Mohab", "Root", 0],
["Tarek", "Root", 3],
["Hany", "Tarek", 0],
["Halim", "Tarek", 2],
["Mahdy", "Tarek", 0],
["Aly", "Halim", 1],
["Osama", "Halim", 0],
["Khaled", "Aly", 0]]);
var obj2 = obj;
for(var i=0; i<obj.length; i++){
obj2[i][0] = obj[i][0];
obj2[i][1] = obj[i][1];
obj2[i][2] = parseInt(obj[i][2], 10);
}
var width = canvas.width;
var height = canvas.height;
//alert(canvas.length/obj[i][2]);
for(var i=0; i<obj2.length; i++){
for(var j=0; j<obj2[i][2]; j++){
if(width>=height){
y.push(width/obj2[i][2]);
y.push(0);
y.push(0);
y.push(width/obj2[i][2]);
y.push(height);
y.push(0);
width = width/obj[i][2];
}
else{
y.push(0);
y.push(height/obj2[i][2]);
y.push(0);
y.push(width);
y.push(height/obj2[i][2]);
y.push(0);
height = height/obj[i][2];
}
}
}
alert(y);
pointsBuffer1 = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, pointsBuffer1);
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(y), gl.STATIC_DRAW);
pointsBuffer1.itemSize = 3;
pointsBuffer1.numItems = y.length/3;
}
【问题讨论】:
-
数组包含[节点名称,节点父节点,子节点数]
标签: javascript text canvas webgl