Как сместить объект openGL, сохраняя при этом проекцию, как будто я смотрю прямо на нее? - PullRequest
2 голосов
/ 10 апреля 2011

Мой мозг растаял, так как я потратил навсегда на эту проблему.

Мне нужно сместить куб от начала координат на два в обоих направлениях по осям x и y, но сохранить одну точку перспективы, как я »Я смотрю прямо на это.

Каждый раз, когда я перевожу куб, он действует так, как будто проекция исходит от источника.

Я не могу понять, как это сделать.

//this is here to draw a graph  
glMatrixMode (GL_PROJECTION);  
glLoadIdentity();  
glOrtho(-10,10,-10,10,-10,10);  
glBegin(GL_LINES);  
glVertex3f(-10, 0,0);  
glVertex3f(10, 0 ,0);  
glVertex3f(0, -10,0);  
glVertex3f(0, 10 ,0);  
glEnd();  



glPushMatrix();  
glLoadIdentity();  
glFrustum(-2.0, 2.0, -2.0, 2.0, 5, 100);

gluLookAt( 0,0,-6,
       0, 0, 0,
       0.0, 1.0, 0.0);
glutWireCube (.5);

glPopMatrix();

glFlush();

Ответы [ 2 ]

1 голос
/ 10 апреля 2011

Вы используете gluLookAt на матрице проекции. Это неправильно, gluLookAt должен применяться к матрице просмотра модели.

0 голосов
/ 10 апреля 2011

Вы выходите из режима GL_PROJECTION, пока вы это делаете. По крайней мере, если я понимаю, о чем вы просите, вы хотите использовать GL_PROJECTION при настройке области просмотра (например, с glOrtho), но для реального чертежа вы хотите работать в режиме GL_MODELVIEW.

...