在 webgl 中创建一个长方体(不是立方体)
Creating a cuboid in webgl(not a cube)
任何人都可以提供完整的 webgl 代码来创建长方体(不是立方体)吗??
我正在尝试在初始化缓冲区中使用以下坐标()
cuboidVertexPositionBuffer1 = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, cuboidVertexPositionBuffer1);
vertices = [
//front face
0.0, 0.0, 0.0,
0.0154, 0.0, 0.0, //X
0.0154, 0.062, 0.0,
0.0, 0.062, 0.0,
// Back face
0.0, 0.0, -0.04,
0.0, 0.062, -0.04,
0.0154, 0.062, -0.04,
0.0154, 0.0, -0.04,
// Top face
0.0, 0.062, -0.04,
0.0, 0.062, 0.0,
0.0154, 0.062, 0.0,
0.0154, 0.062, -0.04,
// Bottom face
0.0, 0.0, -0.04,
0.0154, 0.0, -0.04, //Y
0.0154, 0.0, 0.0,
0.0, 0.0, 0.0,
// Right face
0.0154, 0.0, -0.04,
0.0154, 0.062, -0.04,
0.0154, 0.062, 0.0,
0.0154, 0.0, 0.0,
// Left face
0.0, 0.0, -0.04,
0.0, 0.0, 0.0,
0.0, 0.062, 0.0,
0.0, 0.062, -0.04
];
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW);
cuboidVertexPositionBuffer1.itemSize = 3;
cuboidVertexPositionBuffer1.numItems = 24;
cuboidVertexIndexBuffer1 = gl.createBuffer();
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, cuboidVertexIndexBuffer1);
var cubeVertexIndices = [
0, 1, 2, 0, 2, 3, // Front face
4, 5, 6, 4, 6, 7, // Back face
8, 9, 10, 8, 10, 11, // Top face
12, 13, 14, 12, 14, 15, // Bottom face
16, 17, 18, 16, 18, 19, // Right face
20, 21, 22, 20, 22, 23 // Left face
];
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(cubeVertexIndices), gl.STATIC_DRAW);
cuboidVertexIndexBuffer1.itemSize = 1;
cuboidVertexIndexBuffer1.numItems = 36;
问题出在右侧,当我旋转相机时,随着旋转度数的增加,X 与 Y 合并。
我发现我的错误实际上坐标没有任何错误问题是由于近屏幕 clipper.I 只是改变了它的值并且它起作用了。
任何人都可以提供完整的 webgl 代码来创建长方体(不是立方体)吗??
我正在尝试在初始化缓冲区中使用以下坐标()
cuboidVertexPositionBuffer1 = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, cuboidVertexPositionBuffer1);
vertices = [
//front face
0.0, 0.0, 0.0,
0.0154, 0.0, 0.0, //X
0.0154, 0.062, 0.0,
0.0, 0.062, 0.0,
// Back face
0.0, 0.0, -0.04,
0.0, 0.062, -0.04,
0.0154, 0.062, -0.04,
0.0154, 0.0, -0.04,
// Top face
0.0, 0.062, -0.04,
0.0, 0.062, 0.0,
0.0154, 0.062, 0.0,
0.0154, 0.062, -0.04,
// Bottom face
0.0, 0.0, -0.04,
0.0154, 0.0, -0.04, //Y
0.0154, 0.0, 0.0,
0.0, 0.0, 0.0,
// Right face
0.0154, 0.0, -0.04,
0.0154, 0.062, -0.04,
0.0154, 0.062, 0.0,
0.0154, 0.0, 0.0,
// Left face
0.0, 0.0, -0.04,
0.0, 0.0, 0.0,
0.0, 0.062, 0.0,
0.0, 0.062, -0.04
];
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW);
cuboidVertexPositionBuffer1.itemSize = 3;
cuboidVertexPositionBuffer1.numItems = 24;
cuboidVertexIndexBuffer1 = gl.createBuffer();
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, cuboidVertexIndexBuffer1);
var cubeVertexIndices = [
0, 1, 2, 0, 2, 3, // Front face
4, 5, 6, 4, 6, 7, // Back face
8, 9, 10, 8, 10, 11, // Top face
12, 13, 14, 12, 14, 15, // Bottom face
16, 17, 18, 16, 18, 19, // Right face
20, 21, 22, 20, 22, 23 // Left face
];
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(cubeVertexIndices), gl.STATIC_DRAW);
cuboidVertexIndexBuffer1.itemSize = 1;
cuboidVertexIndexBuffer1.numItems = 36;
问题出在右侧,当我旋转相机时,随着旋转度数的增加,X 与 Y 合并。
我发现我的错误实际上坐标没有任何错误问题是由于近屏幕 clipper.I 只是改变了它的值并且它起作用了。