В OpenGL ваш экран определяется от [-1, -1] до [1, 1].Это то, как работают системы рендеринга.
Попробуйте сделать
glScalef(2.0f/400, 2.0f/400, 1);
glTranslatef(-1f, -1f, 0);
То, что теперь делает видеокарта, это берет ваши вершины, которые определены в пикселях, и преобразует их так, чтобы они правильно располагались внутриОт -1, -1] до [1, 1].
Вы увидите, что он сначала масштабирует его от границы [0,0] - [400, 400] до [0, 0]- [2, 2].Это переводит его в окончательный [-1, -1] - [1, 1]