ПРОГРАМИРУЕМ 3D ГРАФИКУ ИСПОЛЬЗУЯ DirectX


Интерфейсы и классы - часть 17


return TRUE;

}

Текстуры воспроизводятся на экране с учетом покрытий. Покрытие определяет алгоритм, в соответствии с которым текстура накладывается на объект.

^^teb Библиотека классов SdPlus ж! 79

Приведенный ниже фрагмент создает текстуру по готовому изображению и затем накладывает ее на фигуру с использованием цилиндрического покрытия:

C3dlmage* pimgl = new C3dlmage;

pImgl-»Load(IDB_LEAVES) ;

C3dTexture texl;

texl.Create(pimgl) ;

C3dWrap wrap;

wrap.Create(D3DRMWRAP_CYLINDER, NULL,

0, 0, 0, // Начало координат

О, 0, 1, // Направление

О, 1, 0 // Вверх

О, 0, // Начало текстуры

1, 1); // Масштаб текстуры

pTree-»SetTexture (Stexl) ;

wrap.Apply(pTree);

C3dFrame

Класс C3dFrame является оболочкой интерфейса IDirect3DRMFrame и включает несколько дополнительных функций, облегчающих работу с ним. Фреймы содержат ряд атрибутов, в число которых входит положение фрейма и его ориентация в трехмерном пространстве. Положение фрейма устанавливается функцией SetPosition, а ориентация (то есть направление, в котором обращен фрейм) — функцией SetDirection. Для точного определения ориентации необходимо указать два вектора. Первый вектор описывает переднее направление, а второй — верхнее. Рассмотрим ситуацию на примере летящего самолета. Передний вектор (или вектор направления) — это курс, по которому летит самолет, то есть направление, в котором ориентирован его нос. Верхний вектор показывает, куда обращено хвостовое перо самолета — вверх, вниз, влево и т. д. Для некоторых объектов верхний вектор оказывается несущественным. Например, в вашем макете может присутствовать конус, указывающий на некоторый объект. Ориентация конуса совпадает с направлением, куда смотрит его вершина. Верхний вектор не имеет никакого значения, поскольку при вращении конуса вокруг продольной оси его внешний вид не меняется. Чтобы упростить вашу работу, функция SetDirection позволяет задать только передний вектор и определяет верхний вектор за вас. Вот как это делается:

void C3dFrame::SetDirection(double dx, double dy, double dz,




Начало  Назад  Вперед



Книжный магазин