Hi,

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.