WebGL Isometrische Projektion

Okay, verrückt hier. Ich mache etwas WebGL und versuche einen isometrischen Würfel zu machen. Ich möchte Three.js nicht verwenden. Ich möchte zuerst verstehen, was in meinem Code falsch läuft. Ich habe recherchiert und die einzigen Tutorials, die ich finden kann, scheinen für OpenGL zu sein

Auf jeden Fall - hier ist meine drawScene-Funktion:

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();
    }

}

und die Renderfunktion ist

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;
}

Ziemlich Fußgänger. Ich benutze es, um Würfel zu zeichnen. Wie auch immer, in den OpenGL-Beispielen scheinen sie die Perspektivenfunktion abzuschaffen, aber hier ist meine Szene leer, wenn ich sie weglasse. Ich weiß, dass die LookAt-Funktion ordnungsgemäß funktioniert, und das muss ich tunetwas mit der Perspektivenmatrix. Eine kleine Hilfe wäre dankbar. Vielen Dank!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage