РАПИДОГРАФ ФИОЛЕТОВОГО КВАРЦА


Новости
Статьи
Файлы
О себе
Гостевая







BASS Photo Gallery Dumpy home page




E-mail

 

DirectX 8 - Урок 6. Текстура

Я так увлекся экспериментами с вершинными шейдерами и с моделями, что совсем забыл об одной из основ компьютерной графики - текстуре. Посмотрите внимательно на стену в вашей комнате, что вы там видите? Правильно, обои (если они конечно есть :)). Так вот текстура - это обои, наклееные на модель.

Рисунок 1. Куб с текстурой

Физически текстура - это 2-х мерное изображение, которое хранится в любом графическом файле с расширением *.bmp, *.tga, *.jpg и т.д. Поэтому загрузит текстуру в нашу программу очень легко, достаточно лишь вызвать следующую функцию:

// Функция LoadTexture() загружает текстуру
int LoadTexture(void)
{
    if(FAILED(D3DXCreateTextureFromFile(d3d_device,"Logo.bmp",
        &d3d_texture)))
        return 0;
    else
        return 1;
}

Но тут нужно учесть одну особенность. Размерность изображения должна быть кратной степени двойки, т.е. 2x2, 16x16, 256x256, 512x256 и т.д. Это связано с некоторыми ограничениями Direct3D, в целях получения наибольшей производительности.

Для связи модели с текстурой, для каждой ее вершины, определяются так называемые текстурные координаты. Эти координаты определяют положение вершины в пространстве текстуры.

Рисунок 2. Текстурные координаты

Чтобы текстурные координаты поступали в вершинный шейдер, надо их определит в разделе декларации вершинного шейдера:

: 
DWORD v_shader_decl[] = {
    D3DVSD_STREAM(0),
    D3DVSD_REG(D3DVSDE_POSITION,D3DVSDT_FLOAT3),
    D3DVSD_REG(D3DVSDE_NORMAL,D3DVSDT_FLOAT3),
    D3DVSD_REG(D3DVSDE_TEXCOORD0,D3DVSDT_FLOAT2),
    D3DVSD_END()
};
:

А в самом шейдере эти координаты просто передаем для дальнейшей обработки:

:
; Store output texcoord
mov oT0, v7

Не забудьте в функции прорисовки сцены установить текущую текстуру для устройства Direct3D, вызвав

d3d_device->SetTexture(0,d3d_texture);

На этом пожалуй и все. Как видите сами, использовать текстуру в своей программе очень легко. Исходный текст этой программы и exe-файл вы можете взять здесь.


Взято с DirectX Design

Все права проигнорированны © 2002, StasH
Сайт создан в системе uCoz