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