OpenGL не имеет "мировой" системы координат.Он имеет пространство просмотра модели, которое преобразуется матрицей просмотра модели, и имеет пространство клипа, которое достигается из пространства просмотра модели, преобразуя его с помощью матрицы проекции.Пространство клипа - [-1, 1] ^ 3, и оно отображается в области просмотра и диапазоне глубины буфера Z.
Итак, вам нужно определить цепочку преобразований, которая отображает координаты модели в координаты области просмотра.с помощью преобразования идентичности (ну, это не будет работать для Z).Преобразование из пространства клипа в область просмотра исправлено.Таким образом, вы хотите сделать это, используя проекцию, оставляя вид модели преобразованием идентичности:
Это делает трюк:
glViewport(x, y, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, width, 0, height, -1, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
Поместите его перед каждым набором команд рисования, которые происходятпиксельное пространство области просмотра.