Если да, то являются ли сегодня вершинные шейдеры стандартным способом создания ортографической проекции?
Не совсем. Вершинные шейдеры выполняют вычисления, но матрицы преобразования обычно передаются в шейдер через униформу. Шейдер должен оценивать только то, что зависит от каждой вершины. Реализация функции «орто» возвращает матрицу проекции в GLSL контрпродуктивно.
Я бы хотел настроить ортографическую проекцию, используя только современные методы OpenGL (то есть, никаких вещей в непосредственном режиме). Я вижу противоречивую информацию в Интернете о том, как подойти к этому.
Матричный стек OpenGL до версии 3 не имеет ничего общего с непосредственным режимом. Непосредственный режим был glBegin(…); for(…){ ...; glVertex(…);} glEnd()
. И вплоть до версии 3 OpenGL довольно часто использовались матрицы, указанные через стек матриц в вершинном шейдере.
С OpenGL-3 он был нацелен на то, что изначально планировалось для OpenGL-2: унификация API и удаление старого хлама. Одной из тех вещей, которые были удалены, был стек матрицы. Во всяком случае, многие шейдеры уже использовали больше, чем стандартные матрицы (как, например, для скелетной анимации), поэтому матрицы уже были переданы как униформы, и программы уже содержали весь матричный математический код. Следующим логическим шагом было сделать шаг по отзыву математической математики из OpenGL-3.