Модификация системы координат OpenGL - PullRequest
4 голосов
/ 19 мая 2010

Я использую OpenGL с gluPerspective, что мне нужно сделать, чтобы заставить его использовать систему координат, источник которой находится слева вверху, а не внизу слева?

Ответы [ 2 ]

2 голосов
/ 19 мая 2010

Я бы сказал, что прямое управление матрицей проекций - это чистый способ для этой операции. Но если случайно вам понадобится альтернатива:

Вы можете просто использовать glScalef(1.f, -1.f, 1.f), чтобы перевернуть ось.

Это также просто операция над матрицей GL_MODELVIEW или GL_PROJECTION (независимо от того, что в данный момент активно).

1 голос
/ 19 мая 2010

Вы можете сделать это, щелкнув по оси y матрицы проекции. Итак:

glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadMatrix( [1  0  0  0; 
               0 -1  0  0; 
               0  0  1  0; 
               0  0  0  1] ); 
            // ^ pseudo-code, replace with actual matrix

Это должно сделать это.

Вы также можете использовать вызов glMultMatrix с той же матрицей (вместо Push, а затем Load), но этот способ легче изменить (просто вызовите glPopMatrix в стеке GL_PROJECTION позже) ,

Вы также можете использовать ту же технику, чтобы перевернуть любую из других осей; просто поместите минус в соответствующих местах.

...