Я пытаюсь изучить некоторые основы 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]
?
'Вы не ограничены в диапазоне для координат объекта. '- интересно, поэтому причина, по которой я вижу в большинстве учебников, которые определяют значения координат как float в' [-1,1] ', - это просто соглашение? – Andna
@Andna: В основном это связано с тем, что большинство учебников начинаются с преобразования идентичности из пространства модели в пространство клипа. Так что в первой программе «Hello World of OpenGL» с простым преобразованием что-то становится видимым, координаты должны быть в [-1; 1]. Дальнейшие учебники, как правило, основываются на этом, сохраняя существующую геометрию для знакомства. Но для этого нет никакой технической причины. – datenwolf
Спасибо, что разъяснил это для меня. – Andna