2013-07-07 2 views
1

Я пытаюсь изучить некоторые основы OpenGL, прочитав OpenGL Superbible.Преобразования Opengl - путаница разделения перспективы

Я в начале 4-й главы, и у меня есть вопрос о преобразованиях.

Во-первых, соответствующая ссылка: http://www.songho.ca/opengl/gl_transform.html

Если я понимаю, этот трубопровод (так сказать) правильно, если в моем коде, я бы что-то вроде этого

const float vertexPositions[] = { 
0.75f, 0.75f, 0.0f, 1.0f, 
0.75f, -0.75f, 0.0f, 1.0f, 
-0.75f, -0.75f, 0.0f, 1.0f, 
}; 

эти координаты в так называемом объект пространственные координаты, и я могу указать каждое значение как что-то в диапазоне [-1,1].

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

После применения матрицы проекции (будь то проекция в перспективе) мы находимся в пространстве клипов, и все же числа могут иметь любое возможное значение.

Теперь вот что мне интересно. На этой странице сказано, что для каждой вершины координаты x,y,z мы погружаем ее на четвертое значение w, которое присутствует, потому что мы используем однородную систему координат, а после деления x,y,z находятся в диапазоне [-1,1].

Мой вопрос, как может быть уверен, что после всех этих преобразований значение w будет достаточным, что после деления x,y,z на него мы получим что-то в диапазоне [-1,1]?

ответ

2

... координаты пространства объекта, и я могу указать каждое значение как-то в диапазоне [-1,1].

Вы не ограничены в пространстве для координат объекта.

Мой вопрос в том, как можно быть уверенным, что после всех этих преобразований значение w будет достаточно, что после деления x, y, z на него мы получим что-то в диапазоне [-1,1] ?

Диапазон [-1, 1] - диапазон, который будет отображаться в окне просмотра после преобразования. Все, что находится за пределами этого диапазона, находится за пределами области просмотра и, следовательно, обрезано. Об этом ничего не стоит. Если все находится в зоне действия, они видны, если нет, они находятся вне окна окна просмотра.

+0

'Вы не ограничены в диапазоне для координат объекта. '- интересно, поэтому причина, по которой я вижу в большинстве учебников, которые определяют значения координат как float в' [-1,1] ', - это просто соглашение? – Andna

+0

@Andna: В основном это связано с тем, что большинство учебников начинаются с преобразования идентичности из пространства модели в пространство клипа. Так что в первой программе «Hello World of OpenGL» с простым преобразованием что-то становится видимым, координаты должны быть в [-1; 1]. Дальнейшие учебники, как правило, основываются на этом, сохраняя существующую геометрию для знакомства. Но для этого нет никакой технической причины. – datenwolf

+0

Спасибо, что разъяснил это для меня. – Andna

Смежные вопросы