Навигация по сайту:
home
файлы
ссылки
уроки, примеры
форум




  Уроки, примеры


Урок 4

Текстурирование
Следуя моим урокам, вы уже научились создавать треугольник. Значит, вы уже можете создавать объекты. Но сами цветные объекты выглядят немного некрасиво, лучше бы их затекстурировать. Для этого вам надо во-первых изменить теп точки, добавить в нее текстурные координаты:

struct CUSTOMVERTEX
{
D3DXVECTOR3 pos;
float diffuse;
float tu, tv;
};

#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ | D3DFVF_DIFFUSE|D3DFVF_TEX1)

Теперь tu и tv –текстурные координаты вершины. Внимание: не забудьте поменять содержание и размер структуры, содержащей параметры точек, а то будут глюки и работать ничего не будет. Но теперь вам надо создать саму текстуру. Для этого вы должны найти функцию InitApp() и добавит туда:

LPDIRECT3DTEXTURE8 g_pTexture; // в начало файла
D3DXCreateTextureFromFile( g_pd3dDevice, "Texname.bmp", &g_pTexture );

Теперь вы загрузили свой текстуру как g_pTexture. Дпльше вам надо перед прорисовкой указать, чтобы она использовалась при рендеринге. Найдите Render() и вставьте перед DrawPrimitive следуюшее:

g_pd3dDevice->SetTexture( 0, g_pTexture );
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_MODULATE );
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_DISABLE );

Здесь SetTexture задает текущюю текстуру, а SetTextureStageState – ее параметры.
Теперь после рендеринга вы увидите текстурированный объект.

P.S. Текстурные координаты находятся в пределах от 0 до 1. Если координата больше 1 и, например, равна 2, то текстура будет наложена 2 раза.
урок 1
урок 2
урок 3
урок 4


Сайт создан в системе uCoz