Показать сообщение отдельно
Старый 07.03.2014, 23:00   #37
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Ответ: Вращение осей координат

Здесь поворот идет камеры, а мне надо фигуры..... можешь весь исходник кинуть, если не трудно я уже запутался.....
Ты не прав. Поворот( точнее преобразование ) будет именно того что ты укажешь вызовом



device->SetTransform( ... )
Например
device->SetTransform( D3DTS_WORLD, &matrix )
Задаст преобразование которое применится к отрисовываемому объекту( device->DrawIndexedPrimitive, device->DrawPrimitive и т.д. )

Преобразование
device->SetTransform( D3DTS_VIEW, &matrix )
задает дополнительное преобразование вида( камеры ). В DirectX преобразования вынесены в отдельные матрицы, в OpenGL же есть матрицы GL_MODELVIEW - тут две матрицы( видовая и мировая ) уже объединены в одну.

Вообще же приведенный выше код будет работать и для камеры и для объекта.

Для объекта код будет таким, каким я привел его выше.

Для камеры все то же самое, только вызов

device->SetTransform( D3DTS_WORLD, &out );
Заменяется на

device->SetTransform( D3DTS_VIEW, &out );
А общий порядок операций примерно такой

device->SetTransform( D3DTS_WORLD, &worldMatrix );
device->SetTransform( D3DTS_VIEW, &viewMatrix );
device->DrawPrimitive( ... )
В таком варианте при отрисовке задействуются только что установленные матрицы.

Вообще DX и OGL это что-то типа конечного автомата( FFP часть естественно - на то она и Fixed Function Pipeline ). Тоесть задаешь какие-то определенные свойства всему конвееру и видеокарта производит отрисовку именно с такими параметрами.

И да исходника не будет, я для тебя написал приведенный выше кусок кода.

Ну вот вроде и все. Если где ошибся не серчайте.
__________________

(Offline)
 
Ответить с цитированием