Положение точки OpenGL после рендеринга (3D -> 2D)
-
27-09-2019 - |
Вопрос
У меня есть сцена OpenGL с некоторыми цифрами на нем. Можете ли вы сказать мне, что мне нужно сделать, чтобы рассчитать позиции вершин фигур после «рендеринга»? Я знаю, что мне, вероятно, нужно поручать несколько матриц, но я не знаю, кого из них и как.
Заранее благодарю за любую помощь!
Решение
Посмотрите на gluProject()
функция.
Редактировать: также найдено в OpenGL FAQ:
9.100 Как я могу найти координаты экрана для заданного объекта-пространства координаты?
(Тот же ответ, хотя.)
Другие советы
Вы хотите узнать максимальную оценку на вашем экране в Pixles?
Если это так, самый простой способ пойти - это позвонить GluProject для всех ваших вершин и хранить максимальные и минимальные положения X и Y.
Может выглядеть так:
GLdouble modelview[16], projection[16]
GLint viewport[4];
glGetDoublev(GL_MODELVIEW_MATRIX, *modelView);
glGetDoublev(GL_PROJECTION_MATRIX, *projection);
glGetIntegerv(GL_VIEWPORT, *viewport);
double tx, ty, tz;
for(i = 0; i < VertexCount; i++)
{
glProject(vertices[i].x, vertices[i].y, vertices[i].z,
modelview, projection, viewport,
*tx, *ty, *tz);
// now, the 2d position of the ith Vertex is stored in tx, ty, tz.
// you can now use these values to determine the 2d-extends on your screen
}
Не связан с StackOverflow