GLSL вершинный шейдер gl_Position значение
Я создаю игру, которая использует ортогональный вид (2D). Я пытаюсь понять ценность gl_Position
в вершинном шейдере.
Из того, что я понимаю x
а также y
координаты переводятся в положение экрана в диапазоне от -1 до 1, но я довольно запутался с ролью z
а также w
Я только знаю, что w
значение должно быть установлено в 1.0
На данный момент я просто использую gl_Position.xyw = vec3(Position, 1.0);
, где Position
2D вершина
Я использую OpenGL 3.2.
1 ответ
Помните, что openGL также должен работать для 3D, и проще показать детали 3D, чем создавать новый интерфейс только для 2D.
Компонент Z должен установить глубину вершины, точки за пределами -1,1 (после деления перспективы) не будут отрисованы, а для значений между -1,1 он будет проверен по буферу глубины, чтобы увидеть, является ли фрагмент за каким-то ранее нарисованным треугольником и не рисуйте его, если он должен быть скрыт.
Компонент w предназначен для разделения перспективы и позволяет графическому процессору интерполировать значения в правильной перспективе. В противном случае текстуры выглядят странно.