Помощь - Поиск - Пользователи - Календарь
Полная версия: Opengl - менять матрицу внутри блока Glbegin-glend
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Delphi
TarasBer
Есть поезд, несколько вагонов, каждый вращается и двигается по-своему. Для рисования каждого вагона используется своя матрица (поворота и сдвига). Чтобы "сцепить вагоны", ну, грубо говоря, то есть чтоб нарисовать линию от одного к другому, мне надо сначала загрузить в опенгл одну матрицу, нарисовать точку (находящуюся на первом вагоне), потом загрузить другую матрицу, потом нарисовать вторую точку и провести между ними линию.
Так вот между заданиями координат точек загружать матрицу запрещено? У меня сложилось именно такое впечатление.
И тут нельзя напрямую обратиться к области памяти, в которой находится эта самая матрица? Полный доступ к ней очень бы помог.


glBegin(GL_LINES);
glLoadMatrix(PGLfloat(@mtOldVag));
glVertex3f(-TrumLen2, 4, 0);
glLoadMatrix(PGLfloat(@mtNewVag));
glVertex3f(TrumLen2, 4, 0);
glEnd;

volvo
Цитата(TarasBer @ 11.01.2009 19:54) *
Так вот между заданиями координат точек загружать матрицу запрещено? У меня сложилось именно такое впечатление.
Правильное впечатление: MSDN -> glLoadMatrix
Цитата
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 матрицу загружать нельзя.
TarasBer
Какое-то надуманное ограничение...
А что же тогда делать?
Я знаю координаты каждого конца отрезка. Для для одного конца - относительно матрицы mt1, а для другого - относительно матрицы mt2. И как тут выкручиваться?
TarasBer
Ну хорошо, а если преобразовать координаты заранее, до начала рисования линии? Есть такая процедура? То есть на входе - матрица и 3 кодинаты точки, на выходе - 3 новые координаты?
Просто раньше, когда вагоны поворачивались только в 2 плоскостях, я вручную считал координаты точек, но когда появилась 3 плоскость вращения, это стало совсем неприлично.
TarasBer
В общем я решил проблему порнографическим способом - для каждого вагона я считал матрицу поворота, и потом в соответствии с ней преобразовывал точку. Но неужели нет нормального способа?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.