Денис Загаевский: Не поверишь везде найдутся такие знатоки которые сразу пишут "зачем?", а просто так, мне это интересно, хочу набраться опыта в этом направлении. И да я не хочу делать игру, и я знаю что изобретать велосипед это не логично.
C, C++, OpenGL, OpenAL, Bullet/Box2D, glfw, glm, glew, GLSL, vectors, matrices и вся линейная алгебра. Форматы данных, структуры данных. Пайплайн рендеринга и механизмы работы видеокарты. Ну и UI фреймворк какой-нибудь.
glfw реализует только окна и ввод, а SDL2 можно очень хорошо использовать не только для ввода/вывода: джойстиков и вывода звука (только интерфейс, микшер либо с отдельной либы, либо использовать отдельную аудиолибу), даже поддерживает устройства обратной отдачи (Haptic). Что на счёт джойстиков, то SDL2 в этом рулит, они поддерживают тонну различных моделей, даже нестандартные (например, контроллеры от XBox и других приставок), что даже в составе Qt (QtGamepad) его заюзали как бэкэнд ради джойстиков: https://doc.qt.io/qt-5/qtgamepad-index.html.
В моём случае я использую SDL2 чтобы кроме прямого использования OpenGL я мог поддерживать и софтварный рендер (использованием SDL-ных функций) на железе где OpenGL не работает. По желанию можно использовать несколько таких либ одновременно по разным причинам. Например, я частенько использую SDL2 чисто для аудио, не юзая окна (за исключением моего движка, либо некоторых демок).
Виталий: нисколько не занижаю значимости SDL, он очень крут, но лично моё мнение с более простыми компонентами легче разобраться. glfw действительно отвечает только за окна и базовый ввод, но тем не менее всё недостающее можно реализовать просто дополнительными библиотеками. Тут дело вкуса.
Sergey Lerg: Это да, SDL функционален и офигенен, однако сложен для новичка без дополнительных туториалов. Я сам когда впервые с ним столкнулся, разбирался, как с ним работать, и дополнительно разбирался с самим OpenGL. А теперь иногда нахожу баги в самом SDL и шлю фиксы разрабам (я использую hg.libsdl.org-версию)
Немного физики, школьный курс математики + линейная алгебра(для начала хватит цикла статей на хабре "линейная алгебра для разработчиков игр"), знание языка C# или C++ на достаточном уровне ну и много других мелочей.