Перед созданием текстуры производится детектирование типа ресурса и в зависимости от типа выбирается функция создания
#include <d3dx9.h>
HRESULT CreateTexture(IDirect3DBaseTexture9** res, IDirect3DDevice9* pdevice, const WCHAR* path ) { HRESULT hr=0;
if(!path) return E_FAIL;
D3DXIMAGE_INFO ii; hr = D3DXGetImageInfoFromFileW( path, &ii); if FAILED(hr) { return hr; }
switch(ii.ResourceType) {
case D3DRTYPE_TEXTURE: { hr = D3DXCreateTextureFromFileW( pdevice, path, (IDirect3DTexture9**)res ); } break;
case D3DRTYPE_VOLUMETEXTURE: { hr = D3DXCreateVolumeTextureFromFileW( pdevice, path, (IDirect3DVolumeTexture9**)res ); } break;
case D3DRTYPE_CUBETEXTURE: { hr = D3DXCreateCubeTextureFromFileW( pdevice, path, (IDirect3DCubeTexture9**)res ); } break;
default: { return E_FAIL; } }
return hr; }
|