Есть ли разница между gluLookAt () и glFrustum ()? - PullRequest
11 голосов
/ 22 ноября 2010

Мой инструктор говорит, что они могут использоваться взаимозаменяемо для воздействия на матрицу проекции. Он утверждает, что gluLookAt() предпочтительно использовать из-за его «относительной простоты из-за его способности определять угол обзора». Это правда? Я видел примеры кода с использованием gluLookAt() и glFrustum(), и мне интересно, зачем программисту их смешивать.

Как и в cube.c, пример Redbook появляется:

void display(void)
{
  glClear(GL_COLOR_BUFFER_BIT);
  glColor3f(1.0, 1.0, 1.0);
  glLoadIdentity(); 

  gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
  **//why isn't this a call to glFrustum?** 
  glScalef(1.0, 2.0, 1.0); 
  glutWireCube(1.0);
  glFlush();
}

void reshape(int w, int h)
{

  glViewport(0, 0, (GLsizei) w, (GLsizei) h);
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  glFrustum(-1.0, 1.0, -1.0, 1.0, 1.5, 20.0); 
  //why isn't this a call a call to gluLookAt()? 
  glMatrixMode(GL_MODELVIEW);
}

Ответы [ 2 ]

12 голосов
/ 22 ноября 2010

Оба glFrustum и gluLookAt выполняют простое умножение матриц. Проверьте справочные страницы для уравнений для этих матриц:

gluLookAt

glFrustum

Оба они могут быть заменены на glMultMatrix* вызов.

Самым важным отличием является то, что glFrustum используется большую часть времени для установления матрицы перспективной проекции (используется внутри gluPerspective), а gluLookAt - это удобный метод для определения матриц вида модели (обычно: реализации камеры).

2 голосов
/ 27 июня 2013

gluLookAt влияет на матрицу ModelView, тогда как glFrustum / gluPerspective влияют на матрицу проекции.Это полностью две разные матрицы в конвейере.gluLookAt - это служебный метод, который представляет собой комбинацию вызовов glRotate и glTranslate для перемещения «камеры» в соответствующую точку пространства и указания ее в нужном местеПринимая во внимание, что glFrustum / gluPerspective - это методы, которые определяют объем просмотра в перспективе.За подробностями обращайтесь в Красную книгу OpenGL.

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