Создание текстур и разрешение текстурирования
Данные текстур обычно считываются из хранящихся на диске файлов изображений и загружаются в объект IDirect3DTexture9. Для этого используется следующая функция библиотеки D3DX:
HRESULT D3DXCreateTextureFromFile( LPDIRECT3DDEVICE9 pDevice, // устройство для создания текстуры LPCSTR pSrcFile, // имя файла с загружаемым изображением LPDIRECT3DTEXTURE9* ppTexture // указатель для возврата созданной текстуры );
Данная функция позволяет загружать изображения в форматах BMP, DDS, DIB, JPG, PNG и TGA.
Например, чтобы создать текстуру из изображения, хранящегося в файле с именем stonewall.bmp, следует использовать такой код:
IDirect3Dtexture9* _stonewall; D3DXCreateTextureFromFile(_device, "stonewall.bmp", &_stonewall);
Для установки текущей текстуры используется следующий метод:
HRESULT IDirect3DDevice9::SetTexture( DWORD Stage, // Значение в диапазоне 0-7, идентифицирующее // этап текстурирования (см. примечание ниже) IDirect3DBaseTexture9* pTexture // Указатель на устанавливаемую текстуру );
Вот пример использования данного метода:
Device->SetTexture(0, _stonewall);
ПРИМЕЧАНИЕ
Чтобы запретить наложение текстуры на конкретном этапе текстурирования следует установить значение pTexture для соответствующего этапа равным 0.
Например, если мы не хотим использовать при отображении объекта текстуры, следует написать:
Device->SetTexture(0, 0); renderObjectWithoutTexture();
Если в нашей сцене присутствуют треугольники, для которых используются различные текстуры, код должен выглядеть похожим на приведенный ниже фрагмент:
Device->SetTexture(0, _tex0); drawTrisUsingTex0();
Device->SetTexture(0, _tex1); drawTrisUsingTex1();