6. Текстурирование
Текстурирование в Direct3D - это процесс автоматизированный до крайней степени. Однако, некоторые вещи стоит рассмотреть.
Начнем с текстурных координат.
struct TexturedVertex
В Direct3D текстура задается с помощью объекта IDirect3DTexture9. Чтобы загрузить текстуру из файла, нужно использовать процедуру HRESULT D3DXCreateTextureFromFile. Рассмотрим её описание:
HRESULT D3DXCreateTextureFromFile(
pDevice - устройство визуализации.
Чтобы задать, какую текстуру использовать при визуализации, нужно использовать метод HRESULT IDirect3DDevice9::SetTexture.
HRESULT IDirect3DDevice9::SetTexture(
Stage - индекс в цепочке мультитекстурирования.
Если грань по размерам не соответствует текстуре, то текстура автоматически изменяется до размеров грани. После этого, при визуализации, возникают искажения. Для того, чтобы уменьшить эти искажения, применяют фильтрацию текстур. Тип фильтрации задается методом IDirect3DDevice9::SetSamplerState.
//выборка ближайшей точки
При использовании функции HRESULT D3DXCreateTextureFromFile, генерируется не одна текстура, а несколько, разных размеров. Когда грань изменяется в размерах, например, уменьшается, то она текстурируется все более маленькой по размерам (и менее детализированной) текстурой. Это, так называемый, метод детализации текстур (mip-mapping). Существует фильтр детализации текстур. рDevice->SetSamplerState(0, D3DSAMP_MIPFILTER, f); Где f - одна из следующих констант: D3DTEXF_NONE, D3DTEXF_POINT, D3DTEXF_LINEAR. Пример приложения: "Текстурированная плоскость" |