![]() |
|
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]()
|
|
| Master01 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 22.8.2007 Репутация: нет Всего: 2 |
Привет всем.
У меня вопрос по OpenGL. Есть матрица модели GL_ModelView, к которой уже применена операция Translate, значения dx,dy,dz - не известны (имеется ввиду что эта информация может быть взята только из самой матрицы и ни из каких других переменных в программе) Мне же необходимо сначала выпонить Rotate, а потом уже Translate. Проблема в том, translate выполниться раньше (так сделана программа и изменять её в той части крайне не желательно). Rotate должен выполниться над единичной матрицей, а уже после к тому что получилось нужно применить translate dx,dy,dz. По идее нужно сделать следующее: 1.сохранить где-нибудь матрицу модели 2.Загрузить вместо неё единичную матрицу 3.Выполнить над единич матрицей поворот 4.Умножить текущую мартрицу модели на сохранённую И собственно вопрос как выполнить эти шаги в OpenGL, главное - как вытащить матрицу ModelView из OpenGL, чтоб сохранить где-нибудь. А можеть проще какой способ есть? спасибо. |
|||
|
||||
| Solomon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 471 Регистрация: 23.1.2006 Где: Украина Киев Репутация: нет Всего: 2 |
стой.. стой стой... а что такого ужасного произойдет с программой если ты строчки местами поменяеш??? зачем писать гору кода? -------------------- Если не идти до конца к поставленным целям и не пытатся их достигнуть, каким бы тяжелым не казался путь, то лучше и не ставь их перед собой, но тот кто не ставит перед собой труднодоступные цели, никогда не ощутит эйфорию настоящей победы... победы над миром... Соломон 2008 |
|||
|
||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 2 Всего: 52 |
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
| Master01 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 22.8.2007 Репутация: нет Всего: 2 |
Rickert спасибо, но к сожалению твой код работать не будет. Сам посуди, ты сначала сохраняешь матрицу А в стек,
затем использую translate и rotate прелбразуешь её, скажем в B , а потом снова загружаешь старую матрицу А. В итоге -никаких измений. |
|||
|
||||
| Master01 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 22.8.2007 Репутация: нет Всего: 2 |
Спасибо всем за помощь. Я уже разобрался. Вот как это можно сделать, вдруг кому-нибудь интересно
GLfloat matrix[16]; glMatrixMode(GL_MODELVIEW); glGetFloatv(GL_MODELVIEW_MATRIX, matrix ); glLoadIdentity(); glRotatef(60,-1.0,0.0,0.0); glMultMatrixf((const GLfloat*)matrix); |
|||
|
||||
| Rickert |
|
|||
|
Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: 2 Всего: 52 |
Ну, на самом деле, тебе там надо после translatef воткнуть вывод своей модели и всё будет пахать.
-------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
![]()
|
| Вы можете найти полезным что... | |
|
|
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |