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.
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;
}
//This is the method call
Matrix.projection(60.0f, 800.0f / 600.0f, 1.0f, 100.0f);
//and when I print the matrix that is returned I get this
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