I'm trying to create a projection matrix to use in my shaders. I've tried to use the algorithm from here(
http://openglbook.com/the-book/chapter-4-entering-the-third-dimension/) to create the matrix, but when I multiply it with the model and view matrices that I've created nothing displays on the screen.
This is my translation of the C code.
Sorry if there are syntax errors. I wrote this in Scala and translated it to Java.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| public static Matrix4f projection(fov: Float, aspectRatio: Float, near: Float, far: Float) { Matrix4f out = new Matrix4f(); float yScale = 1.0f / scala.math.tan((fov / 2.0f).toRadians).toFloat; float xScale = yScale / aspectRatio; float frustumLength = far - near; float[] tempArray = new float[16]; tempArray[0] = xScale; tempArray[5] = yScale; tempArray[10] = -((far + near) / frustumLength); tempArray[11] = -1; tempArray[14] = -((2 * near * far) / frustumLength); FloatBuffer buf = BufferUtils.createFloatBuffer(16); buf.put(tempArray); buf.flip(); out.load(buf); return out; }
Matrix.projection(60.0f, 800.0f / 600.0f, 1.0f, 100.0f);
1.2990382 0.0 0.0 0.0 0.0 1.7320509 0.0 0.0 0.0 0.0 -1.020202 -2.020202 0.0 0.0 -1.0 0.0 |