Ключевым отличием является то, что вместо вызова glRotate, glTranslate, glScale и т. Д. Вы сами строите матрицу преобразования, вероятно, также некоторую иерархию преобразования. И затем, перед рендерингом рассматриваемого объекта, вы предоставляете его матрицу преобразования через униформу.
Код, необходимый для этого, действительно прост: просто набор линейной алгебры на 4 вектора и 4 × 4 матриц - и кватернионы, если вы хотите их использовать.