I made a simple scene with only one triangle and am now trying to use a projection matrix created by glm. However when I multiply each vertex with it in my shader the triangle disappears.
This is how I create the projection matrix:
projectionMatrix = glm::perspective(45.0f, 800.0f/600.0f, 0.1f, 100.0f);
My triangle vertices have these coordinates:
v1(-1, -1, 1)
v2(1, -1, 1)
v3(0, 1, 1)
I multiply the vertices with the matrix like this:
gl_Position = projectionMatrix * vec4(in_Position.x, in_Position.y, in_Position.z, 1.0);
I am also a bit confused how the projection matrix works. After reading this tutorial I compared the matrix shown there with the one in glm and they differ slightly. For example glm uses the w component of the vector to store -z instead of +z. Doesn't this flip the signs of the x and y components after perspective divide? I also manually multiplied vectors with zNear(0.1f) and zFar(100.0f) as their z component. I think the multiplication should give values that become -1 and 1 after perspective divide but it doesn't.
glm::vec4 v1(-1.0f, -1.0f, 0.1f, 1.0f);
v1 = projectionMatrix * v1; // v1 = ( -1.810660, -2.414213, -0.300400, -0.100000)
glm::vec4 v2(1.0f, -1.0f, 100.0f, 1.0f);
v2 = projectionMatrix * v2; // v2 = ( 1.810660, -2.414213, -100.400406, -100.000000)
Hopefully someone can help me.