Диапазон значений вершин OpenGL (GLFloat) - PullRequest
1 голос
/ 28 февраля 2011

Я изучаю OpenGL и с трудом нахожу четкое определение системы координат.

Как определить, какой числовой диапазон значений будет отображаться в окне просмотра?

Ответы [ 2 ]

4 голосов
/ 28 февраля 2011

-1,0 до +1,0 (после применения всех преобразований).

Эта информация несколько окольными путями скрыта в документации glViewport . Я выбираю версию документации для MSDN, потому что больше других онлайн-источников изменяют формулу во время преобразования в HTML (это правильный формат, но не распознаваемый).

Вы можете получить любую систему координат перед преобразованием, применив соответствующие коэффициенты масштабирования и перевода. glOrtho облегчает это в GL 1.x - 2.x. В OpenGL 3.x вы используете вершинный шейдер для выполнения преобразований.

1 голос
/ 28 февраля 2011

Диапазон видимых значений вершин определяется двумя матрицами преобразования: ModelView и Проекция . ModelView матрица построена с glRotate, glTranslate типом операций и Проекция матрица создана с glOrtho, glPerspective или gluLookAt.

Вершина V преобразуется в координаты области просмотра с приведенным ниже преобразованием, и невидимые части отбираются в целевом пространстве ([-1,1] для всех осей).

V'' = Projection * ModelView * V

Однако glOrtho и glPerspective получают диапазоны видимости в качестве входных данных, заданных в пространстве вида модели. Эти диапазоны сопоставимы с преобразованной вершиной:

V' = ModelView * V

Если вы используете единичную матрицу как ModelView, вы можете сравнить свои значения вершин со значениями, указанными для glOrtho или glPerspective.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...