Объясните: какую базу нужно иметь для изучения Dirext X [C++]?
Вам нужны знания графики. Понимания, как оно всё там работает под капотом. Без этого всего DirectX будет казаться чем-то космическим и непонятным. DirectX никак не завязан на чистый WinAPI. Он базируется на технологии COM. Это посложнее для понимания, чем WinAPI. Ну и, соответственно, это всё работает только на Windows.
OpenGL чуть проще, там чистое Сишное API. Можно писать для множества операционных систем, в том числе, для мобильных платформ.
Оба API используют конечный автомат для рендеринга, все состояния которого тоже нужно отлично понимать. У OpenGL, на мой взгляд, он более лёгок для понимания.
Но для всего этого вам нужно знать, что используется там под капотом. Бездумно искать строки кода и копипастить их к себе не получится. Нужно знать что делает каждая функция, какие состояния конечного автомата меняют, и т. п.
Если хотите начать учить всё это дело, советую начать с отличных статей на Хабре. Если вы осилите весь этот курс, то сможете писать хоть на OpenGL, хоть на DirectX, хоть на Unity/Unreal/CryEngine.
Линейная алгебра: вектора, матрицы, операции над ними. WinAPI вряд ли нужно, изучай лучше сразу directX или opengl. Ну и попробуй движки вроде Unreal Engine и Unity