In opengl, (-1, -1) is lower left In vulkan, it is upper left, so I set the projection matrix [1][1] cell to -1 to flip the y-axis and make it match opengl depth ranges ([-1, 1] in OpenGL, [0, 1] in Vulkan) Vulkan coordinates: X+ points toward right Y+ points toward down (but I flip it in vulkangame in the perspective matrix to point up) Z+ points toward inside the screen In opengl, all 3 coordinates range from -1 to 1 For the perspective matrix, after the vertex shader finishes, the x, y, and z of the final point are automatically divided by the w. For testing the projection matrix in the console, I could do that manually as well.