2014-01-12 7 views
0

У меня есть «нормальная» сцена opengl, и вы хотите наложить эту сцену на простой квад.opengl distortion push-popMatrix

gl.glMatrixMode(GL_PROJECTION); 
gl.glPushMatrix(); 
gl.glLoadIdentity(); 
gl.glMatrixMode(GL_MODELVIEW); 
gl.glPushMatrix(); 
gl.glLoadIdentity(); 
gl.glTranslatef(-0.8f, 0.0f, 0.0f); 
// draw background 
gl.glBegin(GL_QUADS); // of the color cube 
gl.glColor3f(1.0f, 0.5f, 0.5f); 
gl.glVertex3f(0, 0, 1.0f); 
gl.glVertex3f(0.5f, 0, 1.0f); 
gl.glVertex3f(0.5f, 0.5f, 1.0f); 
gl.glVertex3f(0, 0.5f, 1.0f); 
gl.glEnd(); 
gl.glMatrixMode(GL_PROJECTION); 
gl.glPopMatrix(); 
gl.glMatrixMode(GL_MODELVIEW); 
gl.glPopMatrix(); 

как вы можете видеть на скриншоте, новая матрица искажена. цветные линии - это оси.

Теперь вопрос: Как я могу установить соотношение сторон (например, в gluPerspective) для моей матрицы чтобы сделать правильный отряд?

+0

Каким образом это искажается? Не могли бы вы сделать еще одну диаграмму, где вы выберете то, на что она должна выглядеть, или выделите проблемы. –

ответ

2

Вам необходимо указать размер и форму видового экрана. Преобразования выполняются в «нормализованных координатах». Это означает, что нижний левый угол окна просмотра (0,0), а верхний правый угол окна просмотра - (1,1). Ваша проекционная матрица должна учитывать форму окна просмотра, чтобы компенсировать и сделать квадрат квадрата.

Соотношение высоты и ширины окна просмотра известно как «соотношение сторон».

См. this page, важный раздел для вашей проблемы - Поле зрения и соотношение сторон изображения. Слишком много контента, чтобы опубликовать полезную выдержку здесь. У вас не должно возникнуть проблем с поиском ресурсов по пропорциям проекционных матриц и как вычислить правильную матрицу проекции.

+0

спасибо за сайт. Я не понимаю, я читал многие из этих статей. но я не понимаю, как установить это «соотношение сторон», тоже моя текущая матрица ... кажется, мне нужно читать намного больше:/ – Ontje

+0

@Ontje Получить размер области просмотра, 'width/height' - это соотношение сторон. Используйте это число для соотношения сторон. Это помогает? – doug65536

+0

Я знаю, как рассчитать соотношение, я уже использовал его для основной сцены. и, похоже, он работает, поскольку сетка идеальна. после pushMatrix ... это искажение приходит – Ontje

 Смежные вопросы

  • Нет связанных вопросов^_^