OpenGL: 2D координаты вершины к координатам 2D просмотра? - PullRequest
0 голосов
/ 16 ноября 2010

Я реализую растеризатор для проекта класса, и в настоящее время я застрял в том, какой метод / как я должен преобразовать координаты вершины в просмотр координат панели.

Мне дан список вершин 2d координат для треугольника, как

 0 0 1  
 2 0 1  
 0 1 1

и я рисую в области просмотра (используя OpenGL и GLUT), например, размером 400X400 пикселей.

Мой вопрос: как мне решить, где на панели просмотра поместить эти вершины, при условии

1) Я хочу, чтобы координаты центрировались вокруг 0,0 в центре экрана
2) Я хочу заполнить большую часть экрана (скажем, для этого примера экран имеет максимальную координату х + 1 ширину и т. Д.)
3) У меня есть все стандартные функции библиотеки OpenGL и GLUT.

Спасибо!

Ответы [ 2 ]

1 голос
/ 16 ноября 2010

http://www.opengl.org/sdk/docs/man/xhtml/glOrtho.xml

Для центрирования вокруг 0 ​​используйте симметричные левый / правый и нижний / верхний.Остерегайтесь ближнего / дальнего, которые несколько произвольны, но часто выбираются (в примерах) как -1 .. + 1, что может быть проблемой для ваших треугольников при z = 1.

Если вас волнует соотношение сторонубедитесь, что правый левый и нижний верх пропорциональны ширине / высоте окна.

0 голосов
/ 16 ноября 2010

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

в основном у вас естьдля проецирования объекта с использованием указанной матрицы проекции, которая рассчитывается на основе характеристик вашего вида:

  • масштабируйте их в соответствии со значением az (глубины): вы масштабируете оба значения y и x обратно пропорциональноz
  • Вы масштабируете и сдвигаете координаты, чтобы соответствовать ширине вашего вида
...