Зачем использовать GLSL вместе с OpenGL?
Пытаясь понять суть OpenGL, я в итоге столкнулся с GLSL. Раньше я использовал OpenGL для мимических вещей, таких как треугольники и цвета (поскольку я еще многому не научился), но когда я узнал об устаревших функциях, таких как glBegin и glEnd, мне пришлось отучиться от вещей, которые я только что изучил.
Теперь я столкнулся с буферамивершин, объектами вершинных буферов, вершинными и фрагментными шейдерами... Хотя я никогда не понимал, почему нужно использовать GLSL? Зачем использовать GLSL вместе с OpenGL? Что вы не можете сделать, используя чистый OpenGL? Для меня интеграция шейдеров GLSL в программы добавляет сложности, так как вы имеете дело с внешними файлами или вам нужно встраивать шейдеры в программы, что требует больше работы.
У меня очень мало опыта. Я хотел бы узнать больше о предмете, но из-за этого непонятного противоречия я не могу прогрессировать.
Итак, зачем использовать GLSL вместе с OpenGL?
1 ответ
Ваш вопрос не о GLSL; это вообще о шейдерах. GLSL - это только разрешенный способ предоставления шейдеров в OpenGL. Ваш вопрос действительно таков: "Зачем использовать шейдеры вместе с OpenGL?"
Я не собираюсь вдаваться во все детали того, что шейдеры могут делать, чего не может фиксированная функция. Но вот лишь некоторые из вещей, которые вы не можете сделать с помощью OpenGL с фиксированной функцией:
- Вершинно-взвешенный скиннинг на графическом процессоре.
- Двойная кватернионная основа.
- Правильное касательное пространственное отображение.
- Различные методы отложенного рендеринга.
- Отбор Frustum на GPU для инстансированного рендеринга.
- Модели произвольного освещения, включая BRDF или другие сложные модели освещения.
- Сложные методы отображения теней.
- Рендеринг с высоким динамическим диапазоном (OpenGL FFP не позволяет вам превышать 1,0 при любых цветовых расчетах).
- Методы произвольного тонального отображения.
Я могу продолжать (в течение длительного времени), но я думаю, вы поняли. Если вы действительно заботитесь о таких мелочах, как "визуальная точность", вы должны использовать шейдеры.
Вопрос не в том, зачем использовать шейдеры. это "почему бы не использовать шейдеры?"