§ Как куб выглядит

clipboard.png

§ Код инициализации

init()
{
    this.shader  = this.loadShaderTexture();
    this.texture = this.loadTexture("/i/icon/math.png", 'nearest');

    // Вершины куба
    const vertices = [

        // Передняя грань
        -1.0,  1.0, 1.0,    // 0
         1.0,  1.0, 1.0,    // 1
         1.0, -1.0, 1.0,    // 2
        -1.0, -1.0, 1.0,    // 3

        // Задняя грань
         1.0,  1.0, -1.0,   // 4
        -1.0,  1.0, -1.0,   // 5
        -1.0, -1.0, -1.0,   // 6
         1.0, -1.0, -1.0,   // 7

        // Верхняя грань
        -1.0, 1.0, -1.0,    // 8
         1.0, 1.0, -1.0,    // 9
         1.0, 1.0,  1.0,    // 10
        -1.0, 1.0,  1.0,    // 11

        // Нижняя грань
         1.0, -1.0, -1.0,   // 12
        -1.0, -1.0, -1.0,   // 13
        -1.0, -1.0,  1.0,   // 14
         1.0, -1.0,  1.0,   // 15

        // Правая грань
        1.0,  1.0,  1.0,    // 16
        1.0,  1.0, -1.0,    // 17
        1.0, -1.0, -1.0,    // 18
        1.0, -1.0,  1.0,    // 19

        // Левая грань
        -1.0,  1.0, -1.0,   // 20
        -1.0,  1.0,  1.0,   // 21
        -1.0, -1.0,  1.0,   // 22
        -1.0, -1.0, -1.0,   // 23
    ];

    // Указатели на вершиы для сборки в треугольники
    const indicies = [
        0, 1, 2,        0,  2,  3,      // front
        4, 5, 6,        4,  6,  7,      // back
        8, 9, 10,       8,  10, 11,     // top
        12, 13, 14,     12, 14, 15,     // bottom
        16, 17, 18,     16, 18, 19,     // right
        20, 21, 22,     20, 22, 23,     // left
    ];

    // Текстурные координаты к каждой вершине
    const texcoord = [
        0, 0,   1, 0,   1, 1,   0, 1,   // Front
        0, 0,   1, 0,   1, 1,   0, 1,   // Back
        0, 0,   1, 0,   1, 1,   0, 1,   // Top
        0, 0,   1, 0,   1, 1,   0, 1,   // Bottom
        0, 0,   1, 0,   1, 1,   0, 1,   // Right
        0, 0,   1, 0,   1, 1,   0, 1,   // Left
    ];

    this.the_cube = this.createNode(this.shader, vertices, indicies, texcoord, [this.texture]);

    // Для вращения
    this._mx = 0; this._my = 0; this._mz = 0;
}

§ Код фрейма

// Вращение камеры и объектов
loop()
{
    this.cls(0, 0, 0);

    // Камера вращения объекта
    this.camera = this.dot
    (
        this.matRotZ(this._mz),
        this.matRotY(this._my),
        this.matRotX(this._mx),
        this.matTr(0,  0, -3),
    );

    // Отрисовка данной ноды
    this.drawNode(this.the_cube);

    this._mx -= 0.01; this._my -= 0.02; this._mz -= 0.015;
}