From e685b4fbbac907d2b012a6d9c66d6ad770559f00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20L=C3=BCbe=C3=9F?= Date: Wed, 13 Apr 2022 00:00:26 +0200 Subject: [PATCH] Added DirectXTK to GlitchyEngineHelper --- .gitmodules | 3 + GlitchyEditor/content/Textures/rocket.dds | Bin 0 -> 1540 bytes GlitchyEditor/content/Textures/rocket.png | Bin 270 -> 258 bytes GlitchyEngine/BeefProj.toml | 2 +- .../src/Platform/DX11/Renderer/Dx11Texture.bf | 35 +++-- GlitchyEngine/src/Renderer/Texture.bf | 23 ++- GlitchyEngine/src/World/Scene.bf | 2 +- GlitchyEngineHelper/BeefProj.toml | 2 +- GlitchyEngineHelper/CMakeLists.txt | 4 +- GlitchyEngineHelper/GlitchyEngineHelper.cpp | 140 ++++++++++++++++++ GlitchyEngineHelper/GlitchyEngineHelper.h | 5 +- .../src/DirectXTK/DDSTextureLoader.bf | 123 +++++++++++++++ GlitchyEngineHelper/vendor/DirectXTK | 1 + 13 files changed, 316 insertions(+), 24 deletions(-) create mode 100644 GlitchyEditor/content/Textures/rocket.dds create mode 100644 GlitchyEngineHelper/src/DirectXTK/DDSTextureLoader.bf create mode 160000 GlitchyEngineHelper/vendor/DirectXTK diff --git a/.gitmodules b/.gitmodules index 6140576..f23c58c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -28,3 +28,6 @@ [submodule "GlitchyEngine/vendor/bon"] path = GlitchyEngine/vendor/bon url = https://github.com/EinScott/bon.git +[submodule "GlitchyEngineHelper/vendor/DirectXTK"] + path = GlitchyEngineHelper/vendor/DirectXTK + url = https://github.com/microsoft/DirectXTK.git diff --git a/GlitchyEditor/content/Textures/rocket.dds b/GlitchyEditor/content/Textures/rocket.dds new file mode 100644 index 0000000000000000000000000000000000000000..88ac16ba37313aa420595e5e1c1f53d7cb2a4f15 GIT binary patch literal 1540 zcmcIkJ5L)y5T5k~&O*d{L=-Lzc9DV(BN{6OcZC(DNJm2pLWmBE6hX4Yp01$8{~)GH znV;abXxv0XN}J*&swj%I2#P!Te8cRX?Iakl7|%HrSH>CeZ+FqMjsE(m6F{YqN}iNA$~hw zUzcO|pOoLU=Q?Q|c9HVED^DBmA@;i88HJ|a8b9j?jO4)poBT)i&omENyh0**lHmou zPaW5!`<-Ghj^lw$I?44(#Ere){zH%IkHMF$L~*it6TY1io~_W}^C&(x7%BeEzb16m z9)s$V^C;89-2#^E;>BA>S6o^dx&DS_Q(HGs(tsZ guSc-5B6gWrgbz#<;bRWDsw~2c$GQ;FJMGhV3-G$wCIA2c literal 0 HcmV?d00001 diff --git a/GlitchyEditor/content/Textures/rocket.png b/GlitchyEditor/content/Textures/rocket.png index cd34f9063bedc76587900b57d8f8b567ad325d8e..51599fb6044b581d25411f281e0ba5fc37932a9b 100644 GIT binary patch delta 213 zcmeBUYGRro$-&IPz~Hi^>)1p^g?jz~pAgso|Nl2MH2iEak-;eWS3kn4Z~k8||fzvuUC;XS;o zk>gOpduQLz0V2@_aTAU=SPLFdUU~8NNe#{4Sv`%W4-U-C4_N!xNhc%QK%zM|@u$ln zi9h}?UR3GGSXeui?JQt9$MvsUpkU8UK?bk)?pak2s}H_m3SPz=ZaB5N9B40tr>mdK II;Vst0Pj9k761SM delta 225 zcmV<703QE>0*(TZ83+ad0047(di0SYAb$yPNLh0L01m?d01m?e$8V@)0001^Nkl!5`Ru}rg?R?{C$fd; zI#kQLM+AJJ7FPUJ$ot7O}$^eoh6S z1e8Dp48H;sU;?HSaBD&8xI))Kui;b`Kr(CgwVx0b(DKgzcNS=7t5}+hyp+o%gsNZ| b199#EPnA%iGuF?S00000NkvXXu0mjfoMKyx diff --git a/GlitchyEngine/BeefProj.toml b/GlitchyEngine/BeefProj.toml index 46fdcda..ee76dff 100644 --- a/GlitchyEngine/BeefProj.toml +++ b/GlitchyEngine/BeefProj.toml @@ -1,5 +1,5 @@ FileVersion = 1 -Dependencies = {GlitchLog = "*", corlib = "*", DirectX = "*", DirectXTK = "*", FreeType = "*", cgltf-beef = "*", msdfgen-beef = "*", ImGui = "*", ImGuiImplDX11 = "*", ImGuiImplWin32 = "*", ImGuizmo = "*", Beefy2D = "*", LodePng = "*", GlitchyEngineHelper = "*", bon = "*"} +Dependencies = {GlitchLog = "*", corlib = "*", DirectX = "*", FreeType = "*", cgltf-beef = "*", msdfgen-beef = "*", ImGui = "*", ImGuiImplDX11 = "*", ImGuiImplWin32 = "*", ImGuizmo = "*", Beefy2D = "*", LodePng = "*", GlitchyEngineHelper = "*", bon = "*"} [Project] Name = "GlitchyEngine" diff --git a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11Texture.bf b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11Texture.bf index 380642b..fcab3fa 100644 --- a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11Texture.bf +++ b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11Texture.bf @@ -1,21 +1,21 @@ #if GE_GRAPHICS_DX11 using System; +using System.IO; using DirectX.D3D11; using DirectX.Common; using DirectXTK; using GlitchyEngine.Math; +using GlitchyEngine.Platform.DX11; using System.Collections; using internal GlitchyEngine.Renderer; - -typealias NativeTex2DDesc = DirectX.D3D11.Texture2DDescription; - -using GlitchyEngine.Platform.DX11; using internal GlitchyEngine.Platform.DX11; namespace GlitchyEngine.Renderer { + internal typealias NativeTex2DDesc = DirectX.D3D11.Texture2DDescription; + extension Texture { protected internal ID3D11ShaderResourceView* nativeResourceView ~ _?.Release(); @@ -25,19 +25,28 @@ namespace GlitchyEngine.Renderer * @param texture The reference to the pointer that will hold the texture. * @returns true if the texture was loaded successfully; false otherwise. */ - protected bool LoadResourcePlatform(StringView path, ref T* texture) where T : ID3D11Resource + protected bool LoadDdsResourcePlatform(Stream stream, ref T* texture) where T : ID3D11Resource { Debug.Profiler.ProfileResourceFunction!(); + uint8[] ddsData = new:ScopedAlloc! uint8[stream.Length]; + + var result = stream.TryRead(ddsData); + + if (result case .Err(let err)) + { + Log.EngineLogger.Error($"Failed to read texture data from stream. Error: {err}"); + } + ((ID3D11Resource*)texture)?.Release(); nativeResourceView?.Release(); - HResult loadResult = DDSTextureLoader.CreateDDSTextureFromFile(NativeDevice, path.ToScopedNativeWChar!(), - (.)&texture, &nativeResourceView); + HResult loadResult = DDSTextureLoader.CreateDDSTextureFromMemory(NativeDevice, + ddsData.Ptr, (uint)ddsData.Count, (.)&texture, &nativeResourceView); if(loadResult.Failed) { - Log.EngineLogger.Error($"Failed to load texture \"{path}\". Error({(int)loadResult}): {loadResult}"); + Log.EngineLogger.Error($"Failed to load texture. Error({(int)loadResult}): {loadResult}"); ReleaseAndNullify!(texture); ReleaseAndNullify!(nativeResourceView); @@ -85,11 +94,11 @@ namespace GlitchyEngine.Renderer public override uint32 ArraySize => nativeDesc.ArraySize; public override uint32 MipLevels => nativeDesc.MipLevels; - protected override void LoadTexturePlatform() + protected override void LoadDdsPlatform(Stream stream) { Debug.Profiler.ProfileResourceFunction!(); - LoadResourcePlatform(_path, ref nativeTexture); + LoadDdsResourcePlatform(stream, ref nativeTexture); let resType = nativeTexture.GetResourceType(); Log.EngineLogger.Assert(resType == .Texture2D, scope $"The texture \"{_path}\" is not a 2D texture (it is {resType})."); @@ -259,11 +268,11 @@ namespace GlitchyEngine.Renderer public override uint32 ArraySize => nativeDesc.ArraySize / 6; public override uint32 MipLevels => nativeDesc.MipLevels; - protected override void LoadTexturePlatform() + protected override void LoadTexturePlatform(Stream stream) { Debug.Profiler.ProfileResourceFunction!(); - - LoadResourcePlatform(_path, ref nativeTexture); + + LoadDdsResourcePlatform(stream, ref nativeTexture); let resType = nativeTexture.GetResourceType(); Log.EngineLogger.Assert(resType == .Texture2D, scope $"The texture \"{_path}\" is not a texture cube (it is {resType})."); diff --git a/GlitchyEngine/src/Renderer/Texture.bf b/GlitchyEngine/src/Renderer/Texture.bf index 1694b44..052a407 100644 --- a/GlitchyEngine/src/Renderer/Texture.bf +++ b/GlitchyEngine/src/Renderer/Texture.bf @@ -97,7 +97,7 @@ namespace GlitchyEngine.Renderer } else if (strView.StartsWith(DdsMagicWord)) { - LoadTexturePlatform(); + LoadDds(data); } else { @@ -137,6 +137,11 @@ namespace GlitchyEngine.Renderer LodePng.LodePng.Free(rawData); } + protected void LoadDds(Stream stream) + { + LoadDdsPlatform(stream); + } + public this(Texture2DDesc desc) { PrepareTexturePlatform(desc, false); @@ -157,7 +162,7 @@ namespace GlitchyEngine.Renderer uint32 mipLevels = 1, uint32 arraySize = 1, Usage usage = .Default, CPUAccessFlags cpuAccess = .None */ - protected extern void LoadTexturePlatform(); + protected extern void LoadDdsPlatform(Stream stream); protected extern void CreateTexturePlatform(Texture2DDesc desc, bool isRenderTarget, void* data, uint32 linePitch); @@ -195,9 +200,19 @@ namespace GlitchyEngine.Renderer public this(String path) { this._path = new String(path); - LoadTexturePlatform(); + LoadTexture(); + } + + private void LoadTexture() + { + Debug.Profiler.ProfileResourceFunction!(); + + Stream data = Application.Get().ContentManager.GetFile(_path); + defer delete data; + + LoadTexturePlatform(data); } - protected extern void LoadTexturePlatform(); + protected extern void LoadTexturePlatform(Stream stream); } } diff --git a/GlitchyEngine/src/World/Scene.bf b/GlitchyEngine/src/World/Scene.bf index 78e4152..f0ea702 100644 --- a/GlitchyEngine/src/World/Scene.bf +++ b/GlitchyEngine/src/World/Scene.bf @@ -20,7 +20,7 @@ namespace GlitchyEngine.World Entity entity2 = CreateEntity("Red Square"); var v = entity2.AddComponent(.(ColorRGBA(0.95f, 0.1f, 0.3f))); - v.Sprite = new Texture2D("Textures/rocket.png"); + v.Sprite = new Texture2D("Textures/rocket.dds"); v.Sprite.SamplerState = SamplerStateManager.PointClamp; _onComponentAddedHandlers.Add(typeof(CameraComponent), (e, t, c) => { diff --git a/GlitchyEngineHelper/BeefProj.toml b/GlitchyEngineHelper/BeefProj.toml index 3a5915b..1f97ac5 100644 --- a/GlitchyEngineHelper/BeefProj.toml +++ b/GlitchyEngineHelper/BeefProj.toml @@ -1,5 +1,5 @@ FileVersion = 1 -Dependencies = {corlib = "*", corlib = "*"} +Dependencies = {corlib = "*", corlib = "*", DirectX = "*"} [Project] Name = "GlitchyEngineHelper" diff --git a/GlitchyEngineHelper/CMakeLists.txt b/GlitchyEngineHelper/CMakeLists.txt index 8139a91..decfff2 100644 --- a/GlitchyEngineHelper/CMakeLists.txt +++ b/GlitchyEngineHelper/CMakeLists.txt @@ -6,7 +6,9 @@ cmake_minimum_required (VERSION 3.15) project ("GlitchyEngineHelper") # Add source to this project's executable. -add_library (GlitchyEngineHelper "GlitchyEngineHelper.cpp" "GlitchyEngineHelper.h" "vendor/xxHash/xxhash.c" "vendor/xxHash/xxhash.h") +add_library (GlitchyEngineHelper "GlitchyEngineHelper.cpp" "GlitchyEngineHelper.h" "vendor/xxHash/xxhash.c" "vendor/xxHash/xxhash.h" "vendor/DirectXTK/Src/DDSTextureLoader.cpp") + +include_directories("vendor/DirectXTK/Inc") # Use statically linked multithreaded MSVC runtime set_property(TARGET GlitchyEngineHelper PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreadedDebug") diff --git a/GlitchyEngineHelper/GlitchyEngineHelper.cpp b/GlitchyEngineHelper/GlitchyEngineHelper.cpp index fb18a7c..f59bf79 100644 --- a/GlitchyEngineHelper/GlitchyEngineHelper.cpp +++ b/GlitchyEngineHelper/GlitchyEngineHelper.cpp @@ -14,3 +14,143 @@ GE_EXPORT XXH64_hash_t bla(void* buffer, size_t size, XXH64_hash_t seed) { return XXH64(buffer, size, seed); } + +// Standard version +GE_EXPORT HRESULT GE_CALLTYPE DirectXTK_CreateDDSTextureFromMemory( + _In_ ID3D11Device* d3dDevice, + _In_reads_bytes_(ddsDataSize) const uint8_t* ddsData, + _In_ size_t ddsDataSize, + _Outptr_opt_ ID3D11Resource** texture, + _Outptr_opt_ ID3D11ShaderResourceView** textureView, + _In_ size_t maxsize, + _Out_opt_ DirectX::DDS_ALPHA_MODE* alphaMode) noexcept +{ + return DirectX::CreateDDSTextureFromMemory(d3dDevice, ddsData, ddsDataSize, texture, textureView, maxsize, alphaMode); +} + +GE_EXPORT HRESULT GE_CALLTYPE DirectXTK_CreateDDSTextureFromFile( + _In_ ID3D11Device* d3dDevice, + _In_z_ const wchar_t* szFileName, + _Outptr_opt_ ID3D11Resource** texture, + _Outptr_opt_ ID3D11ShaderResourceView** textureView, + _In_ size_t maxsize, + _Out_opt_ DirectX::DDS_ALPHA_MODE* alphaMode) noexcept +{ + return DirectX::CreateDDSTextureFromFile(d3dDevice, szFileName, texture, textureView, maxsize, alphaMode); +} + +// Standard version with optional auto-gen mipmap support +GE_EXPORT HRESULT GE_CALLTYPE DirectXTK_CreateDDSTextureFromMemoryMip( +#if defined(_XBOX_ONE) && defined(_TITLE) + _In_ ID3D11DeviceX* d3dDevice, + _In_opt_ ID3D11DeviceContextX* d3dContext, +#else + _In_ ID3D11Device* d3dDevice, + _In_opt_ ID3D11DeviceContext* d3dContext, +#endif + _In_reads_bytes_(ddsDataSize) const uint8_t* ddsData, + _In_ size_t ddsDataSize, + _Outptr_opt_ ID3D11Resource** texture, + _Outptr_opt_ ID3D11ShaderResourceView** textureView, + _In_ size_t maxsize, + _Out_opt_ DirectX::DDS_ALPHA_MODE* alphaMode) noexcept +{ + return DirectX::CreateDDSTextureFromMemory(d3dDevice, d3dContext, ddsData, ddsDataSize, texture, textureView, maxsize, alphaMode); +} + +GE_EXPORT HRESULT GE_CALLTYPE DirectXTK_CreateDDSTextureFromFileMip( +#if defined(_XBOX_ONE) && defined(_TITLE) + _In_ ID3D11DeviceX* d3dDevice, + _In_opt_ ID3D11DeviceContextX* d3dContext, +#else + _In_ ID3D11Device* d3dDevice, + _In_opt_ ID3D11DeviceContext* d3dContext, +#endif + _In_z_ const wchar_t* szFileName, + _Outptr_opt_ ID3D11Resource** texture, + _Outptr_opt_ ID3D11ShaderResourceView** textureView, + _In_ size_t maxsize, + _Out_opt_ DirectX::DDS_ALPHA_MODE* alphaMode) noexcept +{ + return DirectX::CreateDDSTextureFromFile(d3dDevice, d3dContext, szFileName, texture, textureView, maxsize, alphaMode); +} + +// Extended version +HRESULT __cdecl DirectXTK_CreateDDSTextureFromMemoryEx( + _In_ ID3D11Device* d3dDevice, + _In_reads_bytes_(ddsDataSize) const uint8_t* ddsData, + _In_ size_t ddsDataSize, + _In_ size_t maxsize, + _In_ D3D11_USAGE usage, + _In_ unsigned int bindFlags, + _In_ unsigned int cpuAccessFlags, + _In_ unsigned int miscFlags, + _In_ bool forceSRGB, + _Outptr_opt_ ID3D11Resource** texture, + _Outptr_opt_ ID3D11ShaderResourceView** textureView, + _Out_opt_ DirectX::DDS_ALPHA_MODE* alphaMode) noexcept +{ + return DirectX::CreateDDSTextureFromMemoryEx(d3dDevice, ddsData, ddsDataSize, maxsize, usage, bindFlags, cpuAccessFlags, miscFlags, forceSRGB, texture, textureView, alphaMode); +} + +HRESULT __cdecl DirectXTK_CreateDDSTextureFromFileEx( + _In_ ID3D11Device* d3dDevice, + _In_z_ const wchar_t* szFileName, + _In_ size_t maxsize, + _In_ D3D11_USAGE usage, + _In_ unsigned int bindFlags, + _In_ unsigned int cpuAccessFlags, + _In_ unsigned int miscFlags, + _In_ bool forceSRGB, + _Outptr_opt_ ID3D11Resource** texture, + _Outptr_opt_ ID3D11ShaderResourceView** textureView, + _Out_opt_ DirectX::DDS_ALPHA_MODE* alphaMode) noexcept +{ + return DirectX::CreateDDSTextureFromFileEx(d3dDevice, szFileName, maxsize, usage, bindFlags, cpuAccessFlags, miscFlags, forceSRGB, texture, textureView, alphaMode); +} + +// Extended version with optional auto-gen mipmap support +HRESULT __cdecl DirectXTK_CreateDDSTextureFromMemoryExMip( +#if defined(_XBOX_ONE) && defined(_TITLE) + _In_ ID3D11DeviceX* d3dDevice, + _In_opt_ ID3D11DeviceContextX* d3dContext, +#else + _In_ ID3D11Device* d3dDevice, + _In_opt_ ID3D11DeviceContext* d3dContext, +#endif + _In_reads_bytes_(ddsDataSize) const uint8_t* ddsData, + _In_ size_t ddsDataSize, + _In_ size_t maxsize, + _In_ D3D11_USAGE usage, + _In_ unsigned int bindFlags, + _In_ unsigned int cpuAccessFlags, + _In_ unsigned int miscFlags, + _In_ bool forceSRGB, + _Outptr_opt_ ID3D11Resource** texture, + _Outptr_opt_ ID3D11ShaderResourceView** textureView, + _Out_opt_ DirectX::DDS_ALPHA_MODE* alphaMode) noexcept +{ + return DirectX::CreateDDSTextureFromMemoryEx(d3dDevice, d3dContext, ddsData, ddsDataSize, maxsize, usage, bindFlags, cpuAccessFlags, miscFlags, forceSRGB, texture, textureView, alphaMode); +} + +HRESULT __cdecl DirectXTK_CreateDDSTextureFromFileExMip( +#if defined(_XBOX_ONE) && defined(_TITLE) + _In_ ID3D11DeviceX* d3dDevice, + _In_opt_ ID3D11DeviceContextX* d3dContext, +#else + _In_ ID3D11Device* d3dDevice, + _In_opt_ ID3D11DeviceContext* d3dContext, +#endif + _In_z_ const wchar_t* szFileName, + _In_ size_t maxsize, + _In_ D3D11_USAGE usage, + _In_ unsigned int bindFlags, + _In_ unsigned int cpuAccessFlags, + _In_ unsigned int miscFlags, + _In_ bool forceSRGB, + _Outptr_opt_ ID3D11Resource** texture, + _Outptr_opt_ ID3D11ShaderResourceView** textureView, + _Out_opt_ DirectX::DDS_ALPHA_MODE* alphaMode) noexcept +{ + return DirectX::CreateDDSTextureFromFileEx(d3dDevice, d3dContext, szFileName, maxsize, usage, bindFlags, cpuAccessFlags, miscFlags, forceSRGB, texture, textureView, alphaMode); +} diff --git a/GlitchyEngineHelper/GlitchyEngineHelper.h b/GlitchyEngineHelper/GlitchyEngineHelper.h index 67af83b..ca90f7d 100644 --- a/GlitchyEngineHelper/GlitchyEngineHelper.h +++ b/GlitchyEngineHelper/GlitchyEngineHelper.h @@ -4,8 +4,7 @@ #pragma once #define GE_EXPORT extern "C" __declspec(dllexport) -#define GE_CALLTYPE __stdcall +#define GE_CALLTYPE __cdecl #include "vendor/xxHash/xxhash.h" - -// TODO: Reference additional headers your program requires here. +#include "vendor/DirectXTK/Inc/DDSTextureLoader.h" diff --git a/GlitchyEngineHelper/src/DirectXTK/DDSTextureLoader.bf b/GlitchyEngineHelper/src/DirectXTK/DDSTextureLoader.bf new file mode 100644 index 0000000..5e3d6eb --- /dev/null +++ b/GlitchyEngineHelper/src/DirectXTK/DDSTextureLoader.bf @@ -0,0 +1,123 @@ +using DirectX.Common; +using DirectX.D3D11; +using System; +using System.Interop; + +namespace DirectXTK +{ + enum DdsAlphaMode : uint32 + { + Unknown = 0, + Straight = 1, + Premultiplied = 2, + Opaque = 3, + Custom = 4, + } + + public static class DDSTextureLoader + { + // Standard version + [LinkName("DirectXTK_CreateDDSTextureFromMemory"), CallingConvention(.Cdecl)] + public static extern HResult CreateDDSTextureFromMemory( + ID3D11Device* d3dDevice, + uint8* ddsData, + c_size ddsDataSize, + ID3D11Resource** texture, + ID3D11ShaderResourceView** textureView, + c_size maxsize = 0, + DdsAlphaMode* alphaMode = null); + + [LinkName("DirectXTK_CreateDDSTextureFromFile"), CallingConvention(.Cdecl)] + public static extern HResult CreateDDSTextureFromFile( + ID3D11Device* d3dDevice, + c_wchar* szFileName, + ID3D11Resource** texture, + ID3D11ShaderResourceView** textureView, + c_size maxsize = 0, + DdsAlphaMode* alphaMode = null); + + // Standard version with optional auto-gen mipmap support + [LinkName("DirectXTK_CreateDDSTextureFromMemoryMip"), CallingConvention(.Cdecl)] + public static extern HResult CreateDDSTextureFromMemory( + ID3D11Device* d3dDevice, + ID3D11DeviceContext* d3dContext, + uint8* ddsData, + c_size ddsDataSize, + ID3D11Resource** texture, + ID3D11ShaderResourceView** textureView, + c_size maxsize = 0, + DdsAlphaMode* alphaMode = null); + + [LinkName("DirectXTK_CreateDDSTextureFromFileMip"), CallingConvention(.Cdecl)] + public static extern HResult CreateDDSTextureFromFile( + ID3D11Device* d3dDevice, + ID3D11DeviceContext* d3dContext, + c_wchar* szFileName, + ID3D11Resource** texture, + ID3D11ShaderResourceView** textureView, + c_size maxsize = 0, + DdsAlphaMode* alphaMode = null); + + // Extended version + [LinkName("DirectXTK_CreateDDSTextureFromMemoryEx"), CallingConvention(.Cdecl)] + public static extern HResult CreateDDSTextureFromMemoryEx( + ID3D11Device* d3dDevice, + uint8* ddsData, + c_size ddsDataSize, + c_size maxsize, + Usage usage, + BindFlags bindFlags, + CpuAccessFlags cpuAccessFlags, + ResourceMiscFlags miscFlags, + bool forceSRGB, + ID3D11Resource** texture, + ID3D11ShaderResourceView** textureView, + DdsAlphaMode* alphaMode = null); + + [LinkName("DirectXTK_CreateDDSTextureFromFileEx"), CallingConvention(.Cdecl)] + public static extern HResult CreateDDSTextureFromFileEx( + ID3D11Device* d3dDevice, + c_wchar* szFileName, + c_size maxsize, + Usage usage, + BindFlags bindFlags, + CpuAccessFlags cpuAccessFlags, + ResourceMiscFlags miscFlags, + bool forceSRGB, + ID3D11Resource** texture, + ID3D11ShaderResourceView** textureView, + DdsAlphaMode* alphaMode = null); + + // Extended version with optional auto-gen mipmap support + [LinkName("DirectXTK_CreateDDSTextureFromMemoryExMip"), CallingConvention(.Cdecl)] + public static extern HResult CreateDDSTextureFromMemoryEx( + ID3D11Device* d3dDevice, + ID3D11DeviceContext* d3dContext, + uint8* ddsData, + c_size ddsDataSize, + c_size maxsize, + Usage usage, + BindFlags bindFlags, + CpuAccessFlags cpuAccessFlags, + ResourceMiscFlags miscFlags, + bool forceSRGB, + ID3D11Resource** texture, + ID3D11ShaderResourceView** textureView, + DdsAlphaMode* alphaMode = null); + + [LinkName("DirectXTK_CreateDDSTextureFromFileExMip"), CallingConvention(.Cdecl)] + public static extern HResult CreateDDSTextureFromFileEx( + ID3D11Device* d3dDevice, + ID3D11DeviceContext* d3dContext, + c_wchar* szFileName, + c_size maxsize, + Usage usage, + BindFlags bindFlags, + CpuAccessFlags cpuAccessFlags, + ResourceMiscFlags miscFlags, + bool forceSRGB, + ID3D11Resource** texture, + ID3D11ShaderResourceView** textureView, + DdsAlphaMode* alphaMode = null); + } +} \ No newline at end of file diff --git a/GlitchyEngineHelper/vendor/DirectXTK b/GlitchyEngineHelper/vendor/DirectXTK new file mode 160000 index 0000000..2198052 --- /dev/null +++ b/GlitchyEngineHelper/vendor/DirectXTK @@ -0,0 +1 @@ +Subproject commit 21980527c85e623136d4e0e47144b1787b1f2f18