Javascript 矢量阵列
我正在尝试使用JavaScript和Webgl制作一个三角形立方体。立方体将使用数组使用面边顶点结构,但当我使用数组时,屏幕上没有任何图形。 这就是我声明数组的方式Javascript 矢量阵列,javascript,vector,webgl,Javascript,Vector,Webgl,我正在尝试使用JavaScript和Webgl制作一个三角形立方体。立方体将使用数组使用面边顶点结构,但当我使用数组时,屏幕上没有任何图形。 这就是我声明数组的方式 function Vector(x,y,z){ this.x = x; this.y = y; this.z = z; } var V = new Array; V[0] = new Vector(0.0, 1.0, 0.0); V[1] = new Vector(-1.0, -1.0, 0.0); V[2] = new
function Vector(x,y,z){
this.x = x;
this.y = y;
this.z = z;
}
var V = new Array;
V[0] = new Vector(0.0, 1.0, 0.0);
V[1] = new Vector(-1.0, -1.0, 0.0);
V[2] = new Vector(1.0, -1.0, 0.0);
function initBuffers() {
triangleVertexPositionBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, triangleVertexPositionBuffer);
var vertices = [
V[0],
V[1],
V[2]
];
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW);
triangleVertexPositionBuffer.itemSize = 1;
triangleVertexPositionBuffer.numItems = 3;
如果有人能帮忙,我不知道为什么它不会出现在屏幕上。问题是:
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW);
新Float32Array(顶点)
正在返回[NaN,NaN,NaN]
。这是因为Float32Array
构造函数需要的是Number
s数组,而不是Vector
s数组
您需要传递newfloat32array()
一个Number
s的一维数组
如果要修复它,您必须编写一个函数,将向量
数组转换为浮点数组
。大概是这样的:
function vectorsToFloatArray(vertices) {
var numbers = [];
for(var i = 0; i < vertices.length; i++) {
numbers.push(vertices[i].x);
numbers.push(vertices[i].y);
numbers.push(vertices[i].z);
}
return new Float32Array(numbers);
}
这就是你的全部密码吗?您是否正确设置了总账上下文?你能创建一个JSFIDLE让我们看到你所有的代码吗?我从来没有使用过JSFIDLE,但这里有一个链接,我的代码在JSFIDLE上。谢谢你的帮助,我现在可以使用它了。你知道如何创建一个数组,它将接受两个向量E[0]=[V[0],V[1];然后用它画到屏幕上
gl.bufferData(gl.ARRAY_BUFFER, vectorsToFloatArray(vertices), gl.STATIC_DRAW);
triangleVertexPositionBuffer.itemSize = 3;