Введение в программирование трехмерных игр с DX9


         

Окно с изображением текстурированого квадрата, полученное в приложении TexQuad



Рисунок 6.9. Окно с изображением текстурированого квадрата, полученное в приложении TexQuad



Рисунок 6.9. Окно приложения TexQuad


ПРИМЕЧАНИЕ

В сопроводительных файлах есть еще два примера приложений для данной главы. Один пример отображает куб с наложенной текстурой деревянного ящика (Рисунок  6.1). Другой пример демонстрирует различные режимы адресации.

Для добавления к сцене текстур объектов необходимо выполнить следующие действия:

Создать вершины объектов, содержащие заданные координаты текстур.

Загрузить текстуру в интерфейс IDirect3DTexture9 с помошью метода D3DXCreateTextureFromFile.

Установить фильтры для увеличения, уменьшения и детализации текстур.

Перед тем, как рисовать объект, указать связанную с объектом текстуру с помощью метода IDirect3DDevice9::SetTexture.

Мы начинаем с объявления нескольких глобальных переменных — одной для глобального буфера вершин, хранящего данные вершин квадрата, и другой для текстуры, которая будет накладываться на квадрат:

IDirect3DVertexBuffer9* Quad = 0; IDirect3DTexture9* Tex = 0;

Функция Setup достаточно прямолинейна; мы создаем квадрат из двух треугольников и задаем для них координаты текстуры. Затем мы загружаем файл с растровым изображением dx5_logo.bmp в интерфейс IDirect3DTexture9. Теперь мы можем разрешить использование текстур с помощью метода SetTexture. После вышеописанных действий мы указываем, что для уменьшения и увеличения текстур используется линейная фильтрация, и устанавливаем фильтр детализации текстур D3DTEXF_POINT:

bool Setup() { Device->CreateVertexBuffer( 6 * sizeof(Vertex), D3DUSAGE_WRITEONLY, Vertex::FVF, D3DPOOL_MANAGED, &Quad, 0);

Vertex* v; Quad->Lock(0, 0, (void**)&v, 0);

// Квадрат состоит из двух треугольников, // обратите внимание на координаты текстур: v[0] = Vertex(-1.0f, -1.0f, 1.25f, 0.0f, 0.0f, -1.0f, 0.0f, 1.0f); v[1] = Vertex(-1.0f, 1.0f, 1.25f, 0.0f, 0.0f, -1.0f, 0.0f, 0.0f); v[2] = Vertex( 1.0f, 1.0f, 1.25f, 0.0f, 0.0f, -1.0f, 1.0f, 0.0f);

v[3] = Vertex(-1.0f, -1.0f, 1.25f, 0.0f, 0.0f, -1.0f, 0.0f, 1.0f); v[4] = Vertex( 1.0f, 1.0f, 1.25f, 0.0f, 0.0f, -1.0f, 1.0f, 0.0f); v[5] = Vertex( 1.0f, -1.0f, 1.25f, 0.0f, 0.0f, -1.0f, 1.0f, 1.0f);




Содержание  Назад  Вперед