Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Отрисовка объектов в проекции


Автор: Rickert 23.5.2008, 03:54
Есть список объектов, которые надо отрисовать в проекции.
У меня есть координаты где они должны стоять, но проблема в том, что когда я делаю glTranslatef(...) при glMatrixMode(GL_PROJECTION) объекты стоят не на тех координатах, где они стоят при MatrixMode(GL_MODELVIEW).
Рисую так:
Код
glMatrixMode(GL_PROJECTION);
while(tmpObject)
{
  glPushMatrix();
    glTranslatef(tmpObject->data.sPos.x, tmpObject->data.sPos.y, tmpObject->data.sPos.z);
    tmpObject->data.model.asDrawSurface();
  glPopMatrix();
  tmpObject = tmpObject->next;
}
glMatrixMode(GL_MODELVIEW);

Автор: bronislav 23.5.2008, 07:18
Ты не прав.
Чтобы отрисовать объекты в проекции ты выбираешь проекцию, о потом их отрисовываешь
Отрисовывать надо после glMatrixMode(GL_MPDELVIEW);

А проекцию выбирать после glMatrixMode(GL_PROJECTION);
с пом. функций
glOrtho()
gluPerspective()

Автор: Rickert 23.5.2008, 08:38
bronislav, при чём тут переход в способ проекции координат-то? Я говорю о проекции полученного изображения. Тут работа с матрицами. Мой пример как раз выводит проекцию какую надо, но проблема в том, что есть разница в координатах.

Автор: mes 23.5.2008, 12:54
Цитата(Rickert @  23.5.2008,  03:54 Найти цитируемый пост)
asDrawSurface();

что делает эта функция?  отрисовывает ? если да, то там переводится glMatrixMode в GL_MODELVIEW;
так как на момент вызова этой функции установлен режим GL_PROJECTION

но в любом случае непонятно для чего двигать матрицу прокции для каждого объекта если можно изменять матрицу вида

Автор: Rickert 25.5.2008, 18:18
mes, перевода там никакого нет. Повторяю ещё раз: "Тот код, который приведён - рисует объекты в проекции!". Но! В проекции и в ModelView, glTranslatef даёт разные результаты.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)