Вкратце - это называется рендер. Он бывает 2D и 3D, при 2D примитивы двигаются напрямую по области экрана, при 3D рисуется трехмерная сцена. Для отрисовки 3D используется специальное ПО: Maya, 3DS Max, ещё несколько. Данные для сцен кодируются в специфических форматах, данные движения - отдельно, текстуры отдельно, материалы ("синий" - это какой? Блестящий или нет, шершавый или нет, если шершавый, то какой именно? Это всё свойства материала) отдельно. Потом ПО собирает всю информацию в сцену и запускает ray tracing или проверку каждого луча, идущего от зрителя в каждый пиксель (или субпиксель, т.е. несколько лучей на пиксель), куда он попал, куда отразился, куда был преломлен, куда в итоге улетел, и прочие эффекты вроде bump mapping'a, фонового освещения и ещё много чего, что может технически быть на сцене. Из этих пикселей собирается один кадр.
Если разговор об игровом рендеринге, то подход меняется на отрисовку полигонов вместо трассировки лучей - трассировка чересчур затратная, а frame rate нужно держать на уровне. Спецэффекты, освещение, bump mapping и подобное реализуются шейдерами на GLSL/HLSL или чем-то более продвинутом, сцена кодируется в BSP или другом формате, специфическом для игрового движка (BSP - "дедушка" трехмерных сцен, использовался в Quake 1), объекты внутри сцены имеют свои структуры в том же формате, а для отрисовки используются OpenGL, Direct3D/DirectX и на нижнем уровне - всё те же C++.
А если разговор о том, как потом собрать видеофайл, то собирается он из статичных картинок, как мультики, скажем, с использованием какого-либо видеокодека.