static generateCube() {
    /** @type {!Array<number>} */
    const vertices = [
      //  order : left top back right bottom front
      // Front face 3
      -1.0, -1.0, -1.0,
      -1.0, -1.0, 1.0,
      -1.0, 1.0, 1.0,
      -1.0, 1.0, -1.0,
      // Back face 2
      -1.0, 1.0, -1.0,
      -1.0, 1.0, 1.0,
      1.0, 1.0, 1.0,
      1.0, 1.0, -1.0,
      // Top face 6
      -1.0, -1.0, 1.0,
      1.0, -1.0, 1.0,
      1.0, 1.0, 1.0,
      -1.0, 1.0, 1.0,
      // Bottom face 1
      1.0, -1.0, -1.0,
      1.0, 1.0, -1.0,
      1.0, 1.0, 1.0,
      1.0, -1.0, 1.0,
      // Right face 4
      -1.0, -1.0, -1.0,
      1.0, -1.0, -1.0,
      1.0, -1.0, 1.0,
      -1.0, -1.0, 1.0,
      // Left face 5
      -1.0, -1.0, -1.0,
      -1.0, 1.0, -1.0,
      1.0, 1.0, -1.0,
      1.0, -1.0, -1.0,
    ];
    /** @type {!Array<number>} */
    const textureCoords = [
      // Left Face
      2 / 3, 0.5,
      1 / 3, 0.5,
      1 / 3, 0.0,
      2 / 3, 0.0,
      // Top Face
      2 / 3, 0.5,
      2 / 3, 0.0,
      1.0, 0.0,
      1.0, 0.5,
      // Back Face
      1.0, 1.0,
      2 / 3, 1.0,
      2 / 3, 0.5,
      1.0, 0.5,
      // Right Face
      0.0, 0.5,
      0.0, 0.0,
      1 / 3, 0.0,
      1 / 3, 0.5,
      // Bottom Face
      0.0, 0.5,
      1 / 3, 0.5,
      1 / 3, 1.0,
      0.0, 1.0,
      // Front Face
      1 / 3, 1.0,
      1 / 3, 0.5,
      2 / 3, 0.5,
      2 / 3, 1.0,
    ];
    /** @type {!Array<number>} */
    const indices = [
      // Front face
      0, 1, 2,
      0, 2, 3,
      // Back face
      4, 5, 6,
      4, 6, 7,
      // Top face
      8, 9, 10,
      8, 10, 11,
      // Bottom face
      12, 13, 14,
      12, 14, 15,
      // Right face
      16, 17, 18,
      16, 18, 19,
      // Left face
      20, 21, 22,
      20, 22, 23,
    ];

    return {vertices, textureCoords, indices};
  }
@return {{vertices: !Array<number>, textureCoords: !Array<number>,
         indices: !Array<number>}}