diff --git a/Auxiliary/DirectXTexEXR.cpp b/Auxiliary/DirectXTexEXR.cpp index 1de9271..09a6e2e 100644 --- a/Auxiliary/DirectXTexEXR.cpp +++ b/Auxiliary/DirectXTexEXR.cpp @@ -45,8 +45,13 @@ #pragma warning(disable : 4244 4996) #include #include + +// https://openexr.com/en/latest/PortingGuide.html +#include #pragma warning(pop) +#define COMBINED_OPENEXR_VERSION ((10000*OPENEXR_VERSION_MAJOR) + (100*OPENEXR_VERSION_MINOR) + OPENEXR_VERSION_PATCH) + #ifdef __clang__ #pragma clang diagnostic pop #endif @@ -148,6 +153,13 @@ namespace SetLastError(0); } +#if COMBINED_OPENEXR_VERSION >= 30300 + int64_t read(void *buf, uint64_t sz, uint64_t offset) override + { + return Imf::IStream::read(buf, sz, offset); + } +#endif + private: HANDLE m_hFile; LONGLONG m_EOF; @@ -220,7 +232,7 @@ HRESULT DirectX::GetMetadataFromEXRFile(const wchar_t* szFile, TexMetadata& meta const int nameLength = WideCharToMultiByte(CP_UTF8, 0, szFile, -1, nullptr, 0, nullptr, nullptr); if (nameLength > 0) { - fileName.resize(nameLength); + fileName.resize(static_cast(nameLength)); const int result = WideCharToMultiByte(CP_UTF8, 0, szFile, -1, fileName.data(), nameLength, nullptr, nullptr); if (result <= 0) { @@ -338,7 +350,7 @@ HRESULT DirectX::LoadFromEXRFile(const wchar_t* szFile, TexMetadata* metadata, S const int nameLength = WideCharToMultiByte(CP_UTF8, 0, szFile, -1, nullptr, 0, nullptr, nullptr); if (nameLength > 0) { - fileName.resize(nameLength); + fileName.resize(static_cast(nameLength)); const int result = WideCharToMultiByte(CP_UTF8, 0, szFile, -1, fileName.data(), nameLength, nullptr, nullptr); if (result <= 0) { @@ -487,7 +499,7 @@ HRESULT DirectX::SaveToEXRFile(const Image& image, const wchar_t* szFile) const int nameLength = WideCharToMultiByte(CP_UTF8, 0, szFile, -1, nullptr, 0, nullptr, nullptr); if (nameLength > 0) { - fileName.resize(nameLength); + fileName.resize(static_cast(nameLength)); const int result = WideCharToMultiByte(CP_UTF8, 0, szFile, -1, fileName.data(), nameLength, nullptr, nullptr); if (result <= 0) {