//=============================================================================================================================== HRESULT TextureManager::CreateTGATextureFromFile(LPCWSTR tex_filename, ID3D11ShaderResourceView** srv) { HRESULT hr; TexMetadata imageMetadata; ScratchImage* image = new ScratchImage(); hr = LoadFromTGAFile(tex_filename, &imageMetadata, *image); hr = CreateShaderResourceView(mD3DSystem->GetDevice11(), image->GetImages(), image->GetImageCount(), imageMetadata, srv); return hr; }
DirectX::ScratchImage *ImageUtils::loadFromFile(std::string const &path) { HRESULT loadResult; DirectX::TexMetadata info; DirectX::ScratchImage *retImage = new DirectX::ScratchImage; std::string extension = path.substr(path.size() - 4, 4); std::wstring widePath = std::wstring(path.begin(), path.end()); std::transform(extension.begin(), extension.end(), extension.begin(), ::tolower); if (extension == ".dds") { loadResult = LoadFromDDSFile(widePath.c_str(), DirectX::DDS_FLAGS_NONE, &info, *retImage); if (FAILED(loadResult)) { std::cerr << "Material convertor error : DDS texture loading failed (\"" << path << "\")" << std::endl; return (NULL); } } else if (extension == ".tga") { loadResult = LoadFromTGAFile(widePath.c_str(), &info, *retImage); if (FAILED(loadResult)) { std::cerr << "Material convertor error : TGA texture loading failed (\"" << path << "\")" << std::endl; return (NULL); } } else { loadResult = LoadFromWICFile(widePath.c_str(), DirectX::TEX_FILTER_DEFAULT, &info, *retImage); if (FAILED(loadResult)) { std::cerr << "Material convertor error : WIC texture loading failed (\"" << path << "\")" << std::endl; return (NULL); } } return (retImage); }