OpenGL: как получить координаты конкретной точки после преобразования? - PullRequest
3 голосов
/ 08 апреля 2011

Предположим, у меня есть точка (250,125, -20).После следующего преобразования,

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(100.0, 50.0, 0.0);
glRotatef(-25.0, 0.0, 1.0, 0.0);    

Как я могу получить значение текущих координат этой точки?Нужно ли написать подпрограмму для умножения матрицы на вектор?Есть ли встроенные решения?

1 Ответ

7 голосов
/ 08 апреля 2011

Вы не можете получить координаты для конкретной вершины (точки) после преобразования, однако для этого конкретного случая вы можете получить ModelViewMatrix после применения преобразования / поворота.

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(100.0, 50.0, 0.0);
glRotatef(-25.0, 0.0, 1.0, 0.0);  

glGetFloatv(GL_MODELVIEW_MATRIX , *your_matrix*);
//print your matrix to check if that is the desired transformation coordinates

В OpenGL нет волшебной ленты, вам придется написать свою собственную структуру, например: для каждого объекта в вашем мире класс, в котором вы храните вершины и какие данные вы считаете релевантными.

...