IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Opengl - менять матрицу внутри блока Glbegin-glend
сообщение
Сообщение #1


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Есть поезд, несколько вагонов, каждый вращается и двигается по-своему. Для рисования каждого вагона используется своя матрица (поворота и сдвига). Чтобы "сцепить вагоны", ну, грубо говоря, то есть чтоб нарисовать линию от одного к другому, мне надо сначала загрузить в опенгл одну матрицу, нарисовать точку (находящуюся на первом вагоне), потом загрузить другую матрицу, потом нарисовать вторую точку и провести между ними линию.
Так вот между заданиями координат точек загружать матрицу запрещено? У меня сложилось именно такое впечатление.
И тут нельзя напрямую обратиться к области памяти, в которой находится эта самая матрица? Полный доступ к ней очень бы помог.


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



--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата(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 матрицу загружать нельзя.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Какое-то надуманное ограничение...
А что же тогда делать?
Я знаю координаты каждого конца отрезка. Для для одного конца - относительно матрицы mt1, а для другого - относительно матрицы mt2. И как тут выкручиваться?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Ну хорошо, а если преобразовать координаты заранее, до начала рисования линии? Есть такая процедура? То есть на входе - матрица и 3 кодинаты точки, на выходе - 3 новые координаты?
Просто раньше, когда вагоны поворачивались только в 2 плоскостях, я вручную считал координаты точек, но когда появилась 3 плоскость вращения, это стало совсем неприлично.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


В общем я решил проблему порнографическим способом - для каждого вагона я считал матрицу поворота, и потом в соответствии с ней преобразовывал точку. Но неужели нет нормального способа?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 20.04.2024 6:54
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name