2013-02-15 2 views
0

Итак, у меня есть небольшая проблема с тем, чтобы камера openGL выполняла то, что я хочу. В основном, я хочу, чтобы он переместился в определенное место на основе ввода на клавиатуре, визуализировал сцену на текстуре, затем переместился обратно в предыдущее местоположение и затем превратил текстуру в квадрат. Эффект, который я хочу использовать, - это сцена, движущаяся вокруг моего квадроцикла, в то время как квадроцикл остается неподвижным. Однако независимо от того, что я делаю, сам квад всегда заворачивается вместе с текстурой.проблема с камерой openGL

Я в основном делаю следующее:

SetMatrices; 
gluLookAt(randomposition); 
renderSceneToTexture; 
gluLookAt(originalPosition) 
texturemap my quad/render to screen. 

Что я здесь отсутствует? Мой код рендеринга хорош, потому что, когда я не общаюсь с камерой, все делает правильно.

ответ

0

Вам необходимо загрузить идентификационную матрицу (или какую-либо другую каноническую матрицу, которую вы установили в SetMatrices), прежде чем использовать gluLookAt, gluLookAt умножает новую матрицу на существующую матрицу просмотра модели.

В качестве альтернативы вы можете использовать толчок и поп-матричный способ работы:

  • настроить ваши матрицы
  • толчок матрицы просмотра вида
  • взгляд на случайную позицию
  • визуализации сцены в текстуру
  • pop model model matrix
  • посмотреть исходное положение (не обязательно)
  • показать ваш квад.
+0

Спасибо! В этом есть смысл. Я не понимал, что вызов gluLookAt работал как матричное преобразование. – user1782677

+0

Вам нужно понять, что в OpenGL нет такой вещи, как камера, все это преобразования матрицы. Нет необходимости иметь отдельную концепцию камеры и сцены, поскольку, если вы перемещаете камеру или перемещаете сцену в обратном направлении, это даст тот же эффект. Вот почему матрица модели просто описывает одно преобразование, которое является дельтами между тем, что вы увидите как «камера» и «сцена». – wich

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