All axes are flipped, +X points left, +Y is down, +Z is from the camera..

This is all the code that’s working on the projection:

scen.activeCam = glm::ortho(-5.f, 5.f, -5.f, 5.f, 0.001f, 100.f);
scen.activeCam = glm::translate(scen.activeCam, glm::vec3{0, 0, -5});
// Somewhere else.
glUniformMatrix4fv(glGetUniformLocation(shaderprog, "cammat"), 1, GL_FALSE, glm::value_ptr(curscene->activeCam));

And my vertex shader:

#version 120

uniform mat4 cammat;

attribute vec3 a_vert;
attribute vec2 a_tex;
attribute vec3 a_norm;

varying vec2 av_tex;

void main() {
    gl_Position = cammat * vec4(, 1);
    av_tex = a_tex;

I don’t see what I could’ve done wrong, but all UVs are flipped, and all axes are also.