Есть поезд, несколько вагонов, каждый вращается и двигается по-своему. Для рисования каждого вагона используется своя матрица (поворота и сдвига). Чтобы "сцепить вагоны", ну, грубо говоря, то есть чтоб нарисовать линию от одного к другому, мне надо сначала загрузить в опенгл одну матрицу, нарисовать точку (находящуюся на первом вагоне), потом загрузить другую матрицу, потом нарисовать вторую точку и провести между ними линию. Так вот между заданиями координат точек загружать матрицу запрещено? У меня сложилось именно такое впечатление. И тут нельзя напрямую обратиться к области памяти, в которой находится эта самая матрица? Полный доступ к ней очень бы помог.
The following is the error code and its condition. <...> GL_INVALID_OPERATION glLoadMatrix was called between a call to glBegin and the corresponding call to glEnd.
, то есть между glBegin/glEnd матрицу загружать нельзя.
Какое-то надуманное ограничение... А что же тогда делать? Я знаю координаты каждого конца отрезка. Для для одного конца - относительно матрицы mt1, а для другого - относительно матрицы mt2. И как тут выкручиваться?
Ну хорошо, а если преобразовать координаты заранее, до начала рисования линии? Есть такая процедура? То есть на входе - матрица и 3 кодинаты точки, на выходе - 3 новые координаты? Просто раньше, когда вагоны поворачивались только в 2 плоскостях, я вручную считал координаты точек, но когда появилась 3 плоскость вращения, это стало совсем неприлично.
В общем я решил проблему порнографическим способом - для каждого вагона я считал матрицу поворота, и потом в соответствии с ней преобразовывал точку. Но неужели нет нормального способа?