Fixed template class; illegal interface class. compiles on Windows
This commit is contained in:
parent
4af51876cb
commit
be1a712e2c
@ -1027,7 +1027,6 @@ HRESULT DirectX::SaveToHDRFile(const Image& image, const wchar_t* szFile) noexce
|
||||
|
||||
// Write blob
|
||||
auto bytesToWrite = static_cast<const DWORD>(blob.GetBufferSize());
|
||||
DWORD bytesWritten;
|
||||
if (!hFile.Write(blob.GetBufferPointer(), bytesToWrite))
|
||||
{
|
||||
return E_FAIL;
|
||||
@ -1048,7 +1047,6 @@ HRESULT DirectX::SaveToHDRFile(const Image& image, const wchar_t* szFile) noexce
|
||||
|
||||
auto headerLen = static_cast<DWORD>(strlen(header));
|
||||
|
||||
DWORD bytesWritten;
|
||||
if (!hFile.Write(header, headerLen))
|
||||
{
|
||||
return E_FAIL;
|
||||
|
@ -690,7 +690,7 @@ void ScratchImage::Release() noexcept
|
||||
|
||||
if (m_memory)
|
||||
{
|
||||
std::free(m_memory);
|
||||
FreeVectorAligned(m_memory);
|
||||
m_memory = nullptr;
|
||||
}
|
||||
|
||||
|
@ -70,13 +70,17 @@
|
||||
#pragma clang diagnostic ignored "-Wunknown-pragmas"
|
||||
#endif
|
||||
|
||||
|
||||
#define _CRT_SECURE_NO_WARNINGS
|
||||
#define _SILENCE_ALL_CXX17_DEPRECATION_WARNINGS // We love the MSVC team `this library component should be retired to Annex D, along side , until a suitable replacement is standardized.`
|
||||
|
||||
#ifndef WIN32_LEAN_AND_MEAN
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#endif
|
||||
|
||||
|
||||
#include <codecvt>
|
||||
#include <malloc.h>
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
#include <time.h>
|
||||
#include <stdlib.h>
|
||||
@ -91,7 +95,7 @@
|
||||
#include <filesystem>
|
||||
#include <ios>
|
||||
#include <fstream>
|
||||
|
||||
#include <locale>
|
||||
#include <assert.h>
|
||||
|
||||
#if !defined(_DXTX_NOWIN)
|
||||
@ -144,7 +148,8 @@
|
||||
|
||||
#endif
|
||||
|
||||
#include "StdFS.hpp"
|
||||
#include <DXMemory.hpp>
|
||||
#include <StdFS.hpp>
|
||||
|
||||
#define _DXTEX_PRIVATE
|
||||
#include "DirectXTex.h"
|
||||
|
@ -150,12 +150,21 @@ bool DirectX::_DXGIToWIC(DXGI_FORMAT format, GUID& guid, bool ignoreRGBvsBGR) no
|
||||
{
|
||||
switch (format)
|
||||
{
|
||||
case DXGI_FORMA#endif
|
||||
case DXGI_FORMAT_R8G8B8A8_UNORM:
|
||||
case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
|
||||
|
||||
if (ignoreRGBvsBGR)
|
||||
{
|
||||
// If we are not doing conversion so don't really care about BGR vs RGB color-order,
|
||||
// we can use the canonical WIC 32bppBGRA format which avoids an extra format conversion when using the WIC scaler
|
||||
|
||||
memcpy(&guid, &GUID_WICPixelFormat32bppBGRA, sizeof(GUID));
|
||||
}
|
||||
else
|
||||
{
|
||||
memcpy(&guid, &GUID_WICPixelFormat32bppRGBA, sizeof(GUID));
|
||||
}
|
||||
return true;
|
||||
|
||||
case DXGI_FORMAT_D32_FLOAT:
|
||||
memcpy(&guid, &GUID_WICPixelFormat32bppGrayFloat, sizeof(GUID));
|
||||
return true;
|
||||
@ -1454,7 +1463,7 @@ void Blob::Release() noexcept
|
||||
{
|
||||
if (m_buffer)
|
||||
{
|
||||
std::free(m_buffer);
|
||||
FreeVectorAligned(m_buffer);
|
||||
m_buffer = nullptr;
|
||||
}
|
||||
|
||||
@ -1469,7 +1478,7 @@ HRESULT Blob::Initialize(size_t size) noexcept
|
||||
|
||||
Release();
|
||||
|
||||
m_buffer = std::aligned_alloc(size, 16);
|
||||
m_buffer = AllocateVectorAligned(size);
|
||||
if (!m_buffer)
|
||||
{
|
||||
Release();
|
||||
|
@ -170,6 +170,8 @@
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<DisableSpecificWarnings>26812</DisableSpecificWarnings>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
<AdditionalIncludeDirectories>C:\Users\slowerboi\Desktop\test\DirectXTex-CrossPlatform\PlatformSupport </AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
@ -235,6 +237,8 @@
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<DisableSpecificWarnings>26812</DisableSpecificWarnings>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
<AdditionalIncludeDirectories>C:\Users\slowerboi\Desktop\test\DirectXTex-CrossPlatform\PlatformSupport </AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
@ -302,6 +306,8 @@
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<DisableSpecificWarnings>26812</DisableSpecificWarnings>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
<AdditionalIncludeDirectories>C:\Users\slowerboi\Desktop\test\DirectXTex-CrossPlatform\PlatformSupport </AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
|
@ -11,14 +11,8 @@
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------------
|
||||
struct aligned_deleter { void operator()(void* p) noexcept { std::free(p); } };
|
||||
struct aligned_deleter { void operator()(void* p) noexcept { FreeVectorAligned(p); } };
|
||||
|
||||
using ScopedAlignedArrayFloat = std::unique_ptr<float[], aligned_deleter>;
|
||||
|
||||
using ScopedAlignedArrayXMVECTOR = std::unique_ptr<DirectX::XMVECTOR[], aligned_deleter>;
|
||||
|
||||
|
||||
static inline void * AllocateVectorAligned(size_t length)
|
||||
{
|
||||
return std::aligned_alloc(16, length);
|
||||
}
|
||||
using ScopedAlignedArrayXMVECTOR = std::unique_ptr<DirectX::XMVECTOR[], aligned_deleter>;
|
19
PlatformSupport/DXMemory.hpp
Normal file
19
PlatformSupport/DXMemory.hpp
Normal file
@ -0,0 +1,19 @@
|
||||
#pragma once
|
||||
|
||||
static inline void FreeVectorAligned(void * ptr)
|
||||
{
|
||||
#if defined(WIN32)
|
||||
_aligned_free(ptr);
|
||||
#else
|
||||
std::free(ptr);
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void * AllocateVectorAligned(size_t length)
|
||||
{
|
||||
#if defined(WIN32)
|
||||
return _aligned_malloc(length, 16);
|
||||
#else
|
||||
return std::aligned_alloc(16, length);
|
||||
#endif
|
||||
}
|
1
PlatformSupport/StdFS.cpp
Normal file
1
PlatformSupport/StdFS.cpp
Normal file
@ -0,0 +1 @@
|
||||
|
@ -1,20 +1,20 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
template<typename T>
|
||||
class ScopedFile
|
||||
{
|
||||
public:
|
||||
|
||||
|
||||
ScopedFile(const std::string & path, bool reset = false)
|
||||
{
|
||||
init(path, reset);
|
||||
Init(path, reset);
|
||||
}
|
||||
|
||||
ScopedFile(const std::wstring & path, bool reset = false)
|
||||
{
|
||||
std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> converter;
|
||||
init(converter.to_bytes(path), reset);
|
||||
Init(converter.to_bytes(path), reset);
|
||||
}
|
||||
|
||||
~ScopedFile()
|
||||
@ -23,13 +23,10 @@ public:
|
||||
|
||||
if (this->_temp)
|
||||
{
|
||||
DeleteFile();
|
||||
std::filesystem::remove(_path);
|
||||
}
|
||||
}
|
||||
|
||||
virtual size_t GetLength();
|
||||
virtual void SeekBegin(size_t offset);
|
||||
virtual void DeleteFile();
|
||||
|
||||
|
||||
void MakeTemp()
|
||||
{
|
||||
@ -43,7 +40,7 @@ protected:
|
||||
private:
|
||||
|
||||
|
||||
void init(const std::string & path, bool reset)
|
||||
void Init(const std::string & path, bool reset)
|
||||
{
|
||||
this->_path = path;
|
||||
this->_temp = false;
|
||||
@ -75,12 +72,12 @@ public:
|
||||
// -
|
||||
}
|
||||
|
||||
void SeekBegin(size_t offset)
|
||||
void SeekBegin(size_t offset)
|
||||
{
|
||||
_stream.seekp(offset, std::ios_base::beg);
|
||||
}
|
||||
|
||||
size_t GetOffset()
|
||||
size_t GetOffset()
|
||||
{
|
||||
return static_cast<size_t>(_stream.tellp());;
|
||||
}
|
||||
@ -110,11 +107,6 @@ public:
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void DeleteFile()
|
||||
{
|
||||
std::filesystem::remove(_path);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -176,9 +168,4 @@ public:
|
||||
in.resize(length);
|
||||
return Read(in.data(), length);
|
||||
}
|
||||
|
||||
void DeleteFile()
|
||||
{
|
||||
std::filesystem::remove(_path);
|
||||
}
|
||||
};
|
||||
|
@ -164,13 +164,14 @@
|
||||
<Optimization>Disabled</Optimization>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<FloatingPointModel>Fast</FloatingPointModel>
|
||||
<AdditionalIncludeDirectories>..\DirectXTex;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>C:\Users\slowerboi\Desktop\test\DirectXTex-CrossPlatform\PlatformSupport;..\DirectXTex;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;DEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0601;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalOptions>/Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
|
||||
<ControlFlowGuard>Guard</ControlFlowGuard>
|
||||
<DisableSpecificWarnings>26812</DisableSpecificWarnings>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>ole32.lib;windowscodecs.lib;uuid.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
@ -228,13 +229,14 @@
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FloatingPointModel>Fast</FloatingPointModel>
|
||||
<AdditionalIncludeDirectories>..\DirectXTex;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>C:\Users\slowerboi\Desktop\test\DirectXTex-CrossPlatform\PlatformSupport;..\DirectXTex;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_WIN32_WINNT=0x0601;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ControlFlowGuard>Guard</ControlFlowGuard>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalOptions>/Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
|
||||
<DisableSpecificWarnings>26812</DisableSpecificWarnings>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>ole32.lib;windowscodecs.lib;uuid.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
@ -294,13 +296,14 @@
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FloatingPointModel>Fast</FloatingPointModel>
|
||||
<AdditionalIncludeDirectories>..\DirectXTex;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>C:\Users\slowerboi\Desktop\test\DirectXTex-CrossPlatform\PlatformSupport;..\DirectXTex;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;PROFILE;_CONSOLE;_WIN32_WINNT=0x0601;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalOptions>/Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
|
||||
<ControlFlowGuard>Guard</ControlFlowGuard>
|
||||
<DisableSpecificWarnings>26812</DisableSpecificWarnings>
|
||||
<LanguageStandard>stdcpp17</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>ole32.lib;windowscodecs.lib;uuid.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
|
Loading…
Reference in New Issue
Block a user