Javascript 矢量阵列

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

我正在尝试使用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 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;