В настоящее время я иду в колледж для информатики. Хотя в какой-то момент я планирую использовать существующий движок для создания маленькой игры, сейчас моя цель - изучить основы: а именно, 3D-программирование. Я уже провел некоторое исследование относительно выбора между DirectX и OpenGL, и общее мнение, которое из этого получилось, заключалось в том, что независимо от того, выберете ли вы OpenGL или DirectX в качестве платформы для учебных колес, многие знания можно перенести на другую платформу. , Поэтому, поскольку OpenGL поддерживается большим количеством систем (возможно, глупая причина выбирать, что изучать), я решил, что сначала я собираюсь изучать OpenGL.
После того как я принял решение изучать OpenGL, я провел еще несколько исследований и обнаружил дихотомию, о которой я все это время как-то не подозревал: фиксированная функция OpenGL или современный программируемый шейдерный OpenGL. Сначала я подумал, что это был очевидный выбор - изучать шейдерный OpenGL, поскольку это то, что наиболее часто используется в отрасли сегодня. Тем не менее, я наткнулся на очень популярное программирование по обучению современной 3D-графике Джейсона МакКессона, расположенное здесь: http://www.arcsynthesis.org/gltut/
Я прочитал вступительные фрагменты и в разделе «Об этой книге» автор заявляет:
«Во-первых, многое из того, что изучено с помощью этого подхода, должно быть неизбежно отброшено, когда пользователь сталкивается с графической проблемой, которую необходимо решить с помощью программируемости. Программируемость уничтожает почти весь конвейер фиксированных функций, поэтому знания не могут легко передаваться».
но в то же время также подчеркивается, что фиксированная функциональность обеспечивает более легкую, более непосредственную кривую обучения для начинающих, заявляя:
«Обычно считается, что проще всего обучать программистов-новичков с использованием конвейера с фиксированными функциями».
Естественно, вы можете понять, почему у меня может возникнуть конфликт по поводу того, какую парадигму изучать: я трачу много времени на изучение (а затем и на повторное обучение) способов фиксированной функциональности или я предпочитаю начинать с шейдеров? Моя главная проблема в том, что современные программируемые шейдеры так или иначе требуют от программиста понимания конвейера с фиксированными функциями, но я сомневаюсь, что это так.
TL; DR = Как начинающий программист игровой графики, в моих ли интересах изучать 3D-программирование с помощью фиксированной функциональности или современного шейдерного программирования?