Proyección isométrica de WebGL

Bien, me estoy volviendo loco aquí. Estoy haciendo un poco de WebGL y estoy tratando de hacer un cubo isométrico. No quiero usar Three.js. Primero quiero entender qué está mal en mi código. He estado investigando y los únicos tutoriales que puedo encontrar parecen ser para OpenGL

En cualquier caso, aquí está mi función drawScene:

function drawScene() {

this.gl.clear(this.gl.COLOR_BUFFER_BIT | this.gl.DEPTH_BUFFER_BIT);
mat4.perspective(45, this.gl.viewportWidth / this.gl.viewportHeight, 0.1, 100.0, pMatrix);
mvMatrix = mat4.lookAt([0,0,40], [0, 0, 0], [0, 1, 0]);

_globalNext = this._first;

    while(_globalNext) {
    _globalNext.render();
    }

}

y la función de render es

function render() {

mvPushMatrix();

//transform. order matters.
mat4.translate(mvMatrix, [this._x, this._y, this._z]);
mat4.rotate(mvMatrix, 0.01745*this._rot, [this._axisX, this._axisY, this._axisZ]);
mat4.scale(mvMatrix,  [this._scaleX,this._scaleY,this._scaleZ]);

//bind the buffers.
this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this._positionBuff);
this.gl.vertexAttribPointer(this._shader.vertexPositionAttribute, this._positionBuff.itemSize,   this.gl.FLOAT, false, 0, 0);

this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this._colorBuff);
this.gl.vertexAttribPointer(this._shader.vertexColorAttribute, this._colorBuff.itemSize, this.gl.FLOAT, false, 0, 0);

this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, this._indexBuff);
this.setMatrixUniforms(this.gl);
this.gl.drawElements(this.gl.TRIANGLES, this._indexBuff.numItems, this.gl.UNSIGNED_SHORT, 0);

    if(this._usePopper == false) {
    mvPopMatrix();
    } 

_globalNext = this._nextSib;
}

Bastante peatonal. Lo estoy usando para dibujar cubos. De todos modos, en los ejemplos de OpenGL parece que eliminan la función de perspectiva, pero aquí, si la dejo fuera, mi escena está en blanco. Sé que la función lookAt está funcionando correctamente, y tengo que haceralguna cosa Con la matriz de la perspectiva. Un poco de ayuda sería apreciado. ¡Gracias!

Respuestas a la pregunta(1)

Su respuesta a la pregunta