Okay sowas hatte ich mir gedacht. Also dass ich modelview und projection multiplizieren muss. Allerdings gab das kein ergebnis (alles ist schwarz)
Hierzu der Code: (vertex)
Code: attribute vec3 aPosition; attribute vec3 aNormal; attribute vec2 aTexCoord; varying vec3 vNormal; varying vec2 vTexCoord; uniform vec4 uMyColor; varying vec4 vColor; uniform mat4 uModelView; uniform mat4 uProjection; uniform mat4 uModelViewProjection; void main() { gl_Position = uModelViewProjection * vec4(aPosition, 1.0); vTexCoord = aTexCoord; vNormal = aNormal; vColor = uMyColor; }
Die uModelViewProjection wird als Multiplikation von uModelView und uModelViewProjection errechnet.
Code: public Matrix multiply(Matrix m) { return new Matrix( (_00*m._00 + _01*m._10 + _02*m._20 + _03*m._30), (_00*m._01 + _01*m._11 + _02*m._21 + _03*m._31), (_00*m._02 + _01*m._12 + _02*m._22 + _03*m._32), (_00*m._03 + _01*m._13 + _02*m._23 + _03*m._33), (_10*m._00 + _11*m._10 + _12*m._20 + _13*m._30), (_10*m._01 + _11*m._11 + _12*m._21 + _13*m._31), (_10*m._02 + _11*m._12 + _12*m._22 + _13*m._32), (_10*m._03 + _11*m._13 + _12*m._23 + _13*m._33), (_20*m._00 + _21*m._10 + _22*m._20 + _23*m._30), (_20*m._01 + _21*m._11 + _22*m._21 + _23*m._31), (_20*m._02 + _21*m._12 + _22*m._22 + _23*m._32), (_20*m._03 + _21*m._13 + _22*m._23 + _23*m._33), (_30*m._00 + _31*m._10 + _32*m._20 + _33*m._30), (_30*m._01 + _31*m._11 + _32*m._21 + _33*m._31), (_30*m._02 + _31*m._12 + _32*m._22 + _33*m._32), (_30*m._03 + _31*m._13 + _32*m._23 + _33*m._33) ); }
Die Errechnung der Projection:
Code: public static Matrix createPerspectiveMatrix(double fovy, double aspect, double zNear, double zFar) { fovy *= Math.PI / 180.0; double f = Math.tan(Math.PI/2.0 - fovy/2.0); return new Matrix( f/aspect, 0, 0, 0, 0, f, 0, 0, 0, 0, (zFar+zNear)/(zNear-zFar), -1, 0, 0, (2*zFar*zNear)/(zNear-zFar), 0); }
Es bleibt nun leider alles schwarz.
|