Почему не vec3 для OpenGL ES 2.0 gl_Position? Я новичок в OpenGL ES 2.0 и не могу понять следующий простейший шейдер: attribute vec4 vPosition; void main() { gl_Position = vPosition; } Мой вопрос в том, что позиция будет вектором (x, y, z), почему gl_Position a vec4 вместо vec3? Ответ 1 W в vec4 (x, y, z, w) используется для отсечения и играет свою роль, в то время как преобразования линейной алгебры применяются к позиции. По умолчанию это должно быть установлено в 1.0. См. здесь дополнительную информацию: http://web.archive.org/web/20160408103910/http://iphonedevelopment.blogspot.com/2010/11/opengl-es-20-for-iOS-chapter-4.html Ответ 2 Если вы предоставите свои вершины шейдеру непосредственно в пространстве клипов, вы можете просто передать x, y, z и добавить 1 в качестве w-компонента в этом шейдере. attribute vec3 vPosition; // vec3 instead of vec4 void main() { gl_Position = vec4 (vPosition, 1.0); }
Ответ 1 W в vec4 (x, y, z, w) используется для отсечения и играет свою роль, в то время как преобразования линейной алгебры применяются к позиции. По умолчанию это должно быть установлено в 1.0. См. здесь дополнительную информацию: http://web.archive.org/web/20160408103910/http://iphonedevelopment.blogspot.com/2010/11/opengl-es-20-for-iOS-chapter-4.html
Ответ 2 Если вы предоставите свои вершины шейдеру непосредственно в пространстве клипов, вы можете просто передать x, y, z и добавить 1 в качестве w-компонента в этом шейдере. attribute vec3 vPosition; // vec3 instead of vec4 void main() { gl_Position = vec4 (vPosition, 1.0); }