From 599f1e4ffe3da497916c5bcd62e1e668c2e8619a Mon Sep 17 00:00:00 2001 From: Sri Sham Haran Date: Wed, 14 Sep 2022 21:47:39 +0800 Subject: [PATCH 1/3] add sdl to dependencies --- Dependencies.bat | 18 +++++++++++++++++- Dependencies.lua | 1 + SHADE_Application/premake5.lua | 4 ++++ SHADE_Engine/premake5.lua | 13 +++++++------ 4 files changed, 29 insertions(+), 7 deletions(-) diff --git a/Dependencies.bat b/Dependencies.bat index bbce926b..ab015bab 100644 --- a/Dependencies.bat +++ b/Dependencies.bat @@ -17,10 +17,11 @@ echo "J - imnodes" echo "K - tracy" echo "L - RTTR" echo "M - yamlcpp" +echo "O - SDL" echo --------------------------------------------------- echo. -choice /C ABCDEFGHIJKLM /T 10 /D A +choice /C ABCDEFGHIJKLMNO /T 10 /D A set _e=%ERRORLEVEL% if %_e%==1 goto VMA @@ -36,6 +37,7 @@ if %_e%==10 goto imnodes if %_e%==11 goto tracy if %_e%==12 goto RTTR if %_e%==13 goto yamlcpp +if %_e%==15 goto SDL :VMA echo -----------------------VMA---------------------------- @@ -107,6 +109,20 @@ if %_e%==12 (goto :done) else (goto :yamlcpp) echo -----------------------yamlcpp---------------------------- rmdir "Dependencies/yamlcpp" /S /Q git clone https://github.com/SHADE-DP/yaml-cpp.git "Dependencies/yamlcpp" +if %_e%==13 (goto :done) else (goto :SDL) + +:SDL +echo -----------------------SDL---------------------------- +rmdir "Dependencies/SDL" /S /Q +mkdir "Dependencies/SDL/include" +mkdir "Dependencies/SDL/lib" +powershell -Command "& {wget https://github.com/libsdl-org/SDL/releases/download/release-2.24.0/SDL2-devel-2.24.0-VC.zip -OutFile "Dependencies/SDL/SDL.zip"}" +powershell -Command "& {Expand-Archive -LiteralPath Dependencies/SDL/SDL.zip -DestinationPath Dependencies/SDL/tmp}" +robocopy "Dependencies/SDL/tmp/SDL2-2.24.0/lib/x64" "Dependencies/SDL/lib/" /ns /nfl /ndl /nc /njh +robocopy "Dependencies/SDL/tmp/SDL2-2.24.0/include/" "Dependencies/SDL/include/" /ns /nfl /ndl /nc /njh +rmdir "Dependencies/SDL/tmp/" /s /q +del "Dependencies/SDL/SDL.zip" +powershell -Command "& {Remove-Item "Dependencies/SDL/SDL.zip"}" :done echo DONE! diff --git a/Dependencies.lua b/Dependencies.lua index 32382cf9..712f1a89 100644 --- a/Dependencies.lua +++ b/Dependencies.lua @@ -12,4 +12,5 @@ IncludeDir["yamlcpp"] = "%{wks.location}/Dependencies/yamlcpp/include" IncludeDir["RTTR"] = "%{wks.location}/Dependencies/RTTR" IncludeDir["ktx"] = "%{wks.location}/Dependencies/ktx" IncludeDir["reactphysics3d"] = "%{wks.location}/Dependencies/reactphysics3d" +IncludeDir["SDL"] = "%{wks.location}/Dependencies/SDL" IncludeDir["VULKAN"] = "$(VULKAN_SDK)" diff --git a/SHADE_Application/premake5.lua b/SHADE_Application/premake5.lua index 8aa03a13..0830a8e1 100644 --- a/SHADE_Application/premake5.lua +++ b/SHADE_Application/premake5.lua @@ -26,6 +26,7 @@ project "SHADE_Application" "../SHADE_Engine/src", "src", "%{IncludeDir.dotnet}/include", + "%{IncludeDir.SDL}/include", } flags @@ -36,11 +37,14 @@ project "SHADE_Application" links { "SHADE_Engine", + "SDL2.lib", + "SDL2main.lib" } libdirs { "%{IncludeDir.spdlog}/lib", + "%{IncludeDir.SDL}/lib", } postbuildcommands diff --git a/SHADE_Engine/premake5.lua b/SHADE_Engine/premake5.lua index 41693aa8..12b526b1 100644 --- a/SHADE_Engine/premake5.lua +++ b/SHADE_Engine/premake5.lua @@ -31,7 +31,7 @@ project "SHADE_Engine" "%{IncludeDir.tracy}", "%{IncludeDir.VMA}/include", "%{IncludeDir.yamlcpp}", - "%{IncludeDir.ktx}/include", + "%{IncludeDir.SDL}/include", "%{IncludeDir.RTTR}/include", "%{IncludeDir.reactphysics3d}/include", "%{IncludeDir.VULKAN}/include", @@ -45,8 +45,7 @@ project "SHADE_Engine" "%{IncludeDir.assimp}/lib/Debug", "%{IncludeDir.assimp}/lib/Release", "%{IncludeDir.RTTR}/lib", - "%{IncludeDir.ktx}/lib/Debug", - "%{IncludeDir.ktx}/lib/Release", + "%{IncludeDir.SDL}/lib", } links @@ -57,7 +56,9 @@ project "SHADE_Engine" "reactphysics3d", "imgui", "vulkan-1.lib", - "shaderc_shared.lib" + "shaderc_shared.lib", + "SDL2.lib", + "SDL2main.lib" } defines @@ -93,11 +94,11 @@ project "SHADE_Engine" filter "configurations:Debug" symbols "On" defines {"_DEBUG"} - links{"assimp-vc142-mtd.lib", "ktxd.lib", "librttr_core_d.lib"} + links{"assimp-vc142-mtd.lib", "librttr_core_d.lib"} --links{"fmodstudioL_vc.lib", "fmodL_vc.lib"} filter "configurations:Release" optimize "On" defines{"_RELEASE"} - links{"assimp-vc142-mt.lib", "ktx.lib", "librttr_core.lib"} + links{"assimp-vc142-mt.lib", "librttr_core.lib"} --links{"fmodstudio_vc.lib", "fmod_vc.lib"} \ No newline at end of file From 5e4eabc58232ef636d3c9c37ab0c935c0cb6346d Mon Sep 17 00:00:00 2001 From: Sri Sham Haran Date: Thu, 15 Sep 2022 00:48:43 +0800 Subject: [PATCH 2/3] [WIP] SDL Window wrap --- Dependencies.bat | 1 - .../src/Application/SBApplication.cpp | 5 +-- .../src/Application/SBApplication.h | 4 ++- .../Graphics/Windowing/SDL/SHSDLWindow.cpp | 36 +++++++++++++++++++ .../src/Graphics/Windowing/SDL/SHSDLWindow.h | 21 +++++++++++ 5 files changed, 63 insertions(+), 4 deletions(-) create mode 100644 SHADE_Engine/src/Graphics/Windowing/SDL/SHSDLWindow.cpp create mode 100644 SHADE_Engine/src/Graphics/Windowing/SDL/SHSDLWindow.h diff --git a/Dependencies.bat b/Dependencies.bat index ab015bab..14c8ca03 100644 --- a/Dependencies.bat +++ b/Dependencies.bat @@ -121,7 +121,6 @@ powershell -Command "& {Expand-Archive -LiteralPath Dependencies/SDL/SDL.zip -De robocopy "Dependencies/SDL/tmp/SDL2-2.24.0/lib/x64" "Dependencies/SDL/lib/" /ns /nfl /ndl /nc /njh robocopy "Dependencies/SDL/tmp/SDL2-2.24.0/include/" "Dependencies/SDL/include/" /ns /nfl /ndl /nc /njh rmdir "Dependencies/SDL/tmp/" /s /q -del "Dependencies/SDL/SDL.zip" powershell -Command "& {Remove-Item "Dependencies/SDL/SDL.zip"}" :done diff --git a/SHADE_Application/src/Application/SBApplication.cpp b/SHADE_Application/src/Application/SBApplication.cpp index 0cb1ecd1..1bc1bcbd 100644 --- a/SHADE_Application/src/Application/SBApplication.cpp +++ b/SHADE_Application/src/Application/SBApplication.cpp @@ -23,9 +23,10 @@ namespace Sandbox _In_ INT nCmdShow ) { - SHLOG_TITLE("Initialising SBApplication") - + //SHLOG_TITLE("Initialising SBApplication") + SHADE::SHSDLWindow::InitPlatform(); window.Create(hInstance, hPrevInstance, lpCmdLine, nCmdShow); + sdlWindow.CreateSDLWindow(window.GetHWND()); #ifdef SHEDITOR #else diff --git a/SHADE_Application/src/Application/SBApplication.h b/SHADE_Application/src/Application/SBApplication.h index a1bf11eb..65bcd582 100644 --- a/SHADE_Application/src/Application/SBApplication.h +++ b/SHADE_Application/src/Application/SBApplication.h @@ -1,6 +1,7 @@ #ifndef SB_APPLICATION_H #define SB_APPLICATION_H -#include +#include +#include "Graphics/Windowing/SHWindow.h" //using namespace SHADE; namespace Sandbox @@ -9,6 +10,7 @@ namespace Sandbox { private: SHADE::SHWindow window; + SHADE::SHSDLWindow sdlWindow; //SHAppConfig config; public: SBApplication() = default; diff --git a/SHADE_Engine/src/Graphics/Windowing/SDL/SHSDLWindow.cpp b/SHADE_Engine/src/Graphics/Windowing/SDL/SHSDLWindow.cpp new file mode 100644 index 00000000..0725dd7a --- /dev/null +++ b/SHADE_Engine/src/Graphics/Windowing/SDL/SHSDLWindow.cpp @@ -0,0 +1,36 @@ +#include "SHpch.h" + +#include "SHSDLWindow.h" + +#include "Tools/SHLogger.h" + +namespace SHADE +{ + SHSDLWindow::~SHSDLWindow() + { + SDL_DestroyWindow(sdlWindow); + } + + void SHSDLWindow::InitPlatform(void) noexcept + { + SDL_Init(SDL_INIT_EVERYTHING); + } + + void SHSDLWindow::CreateSDLWindow(const char* title, int x, int y, int width, int height) noexcept + { + sdlWindow = SDL_CreateWindow(title, x, y, width, height, 0); + if (sdlWindow == nullptr) + { + SHLOG_ERROR("Failed to create window") + } + } + + void SHSDLWindow::CreateSDLWindow(HWND hwnd) noexcept + { + sdlWindow = SDL_CreateWindowFrom(hwnd); + if (sdlWindow == nullptr) + { + SHLOG_ERROR("Failed to create window from existing native Win32 Window") + } + } +} diff --git a/SHADE_Engine/src/Graphics/Windowing/SDL/SHSDLWindow.h b/SHADE_Engine/src/Graphics/Windowing/SDL/SHSDLWindow.h new file mode 100644 index 00000000..d53bdcf9 --- /dev/null +++ b/SHADE_Engine/src/Graphics/Windowing/SDL/SHSDLWindow.h @@ -0,0 +1,21 @@ +#pragma once +#include +#define SDL_HINT_VIDEO_FOREIGN_WINDOW_VULKAN 0 +#include + +namespace SHADE +{ + class SHSDLWindow + { + public: + SHSDLWindow() = default; + ~SHSDLWindow(); + + static void InitPlatform(void) noexcept; + void CreateSDLWindow(const char* title, int x, int y, int width, int height) noexcept; + void CreateSDLWindow(HWND hwnd) noexcept; + + private: + SDL_Window* sdlWindow = nullptr; + }; +} From bd69c6043aa1b85f198df04ec312f5387c10db26 Mon Sep 17 00:00:00 2001 From: Sri Sham Haran Date: Thu, 15 Sep 2022 09:26:43 +0800 Subject: [PATCH 3/3] SDL Updates --- Dependencies.bat | 64 +++++++++---------- Dependencies.lua | 1 - .../src/Application/SBApplication.cpp | 6 +- .../src/Application/SBApplication.h | 4 +- .../Graphics/Windowing/SDL/SHSDLWindow.cpp | 36 ----------- .../src/Graphics/Windowing/SDL/SHSDLWindow.h | 21 ------ 6 files changed, 37 insertions(+), 95 deletions(-) delete mode 100644 SHADE_Engine/src/Graphics/Windowing/SDL/SHSDLWindow.cpp delete mode 100644 SHADE_Engine/src/Graphics/Windowing/SDL/SHSDLWindow.h diff --git a/Dependencies.bat b/Dependencies.bat index 14c8ca03..f156b91c 100644 --- a/Dependencies.bat +++ b/Dependencies.bat @@ -8,16 +8,15 @@ echo "A - All" echo "B - VMA" echo "C - msdf" echo "D - assimp" -echo "E - ktx" -echo "F - spdlog" -echo "G - reactphysics3d" -echo "H - imgui" -echo "I - imguizmo" -echo "J - imnodes" -echo "K - tracy" -echo "L - RTTR" -echo "M - yamlcpp" -echo "O - SDL" +echo "E - spdlog" +echo "F - reactphysics3d" +echo "G - imgui" +echo "H - imguizmo" +echo "I - imnodes" +echo "J - tracy" +echo "K - RTTR" +echo "L - yamlcpp" +echo "N - SDL" echo --------------------------------------------------- echo. @@ -28,16 +27,15 @@ if %_e%==1 goto VMA if %_e%==2 goto VMA if %_e%==3 goto MSDF if %_e%==4 goto assimp -if %_e%==5 goto ktx -if %_e%==6 goto spdlog -if %_e%==7 goto reactphysics3d -if %_e%==8 goto imgui -if %_e%==9 goto imguizmo -if %_e%==10 goto imnodes -if %_e%==11 goto tracy -if %_e%==12 goto RTTR -if %_e%==13 goto yamlcpp -if %_e%==15 goto SDL +if %_e%==5 goto spdlog +if %_e%==6 goto reactphysics3d +if %_e%==7 goto imgui +if %_e%==8 goto imguizmo +if %_e%==9 goto imnodes +if %_e%==10 goto tracy +if %_e%==11 goto RTTR +if %_e%==12 goto yamlcpp +if %_e%==14 goto SDL :VMA echo -----------------------VMA---------------------------- @@ -57,59 +55,59 @@ rmdir "Dependencies/assimp" /S /Q git clone https://github.com/SHADE-DP/assimp.git "Dependencies/assimp" if %_e%==4 (goto :done) else (goto :ktx) -:ktx -rmdir "Dependencies/ktx" /S /Q -echo -----------------------ktx---------------------------- -git clone https://github.com/SHADE-DP/ktx.git "Dependencies/ktx" -if %_e%==5 (goto :done) else (goto :spdlog) +@REM :ktx +@REM rmdir "Dependencies/ktx" /S /Q +@REM echo -----------------------ktx---------------------------- +@REM git clone https://github.com/SHADE-DP/ktx.git "Dependencies/ktx" +@REM if %_e%==5 (goto :done) else (goto :spdlog) :spdlog echo -----------------------spdlog---------------------------- rmdir "Dependencies/spdlog" /S /Q git clone https://github.com/SHADE-DP/spdlog.git "Dependencies/spdlog" -if %_e%==6 (goto :done) else (goto :reactphysics3d) +if %_e%==5 (goto :done) else (goto :reactphysics3d) :reactphysics3d echo -----------------------reactphysics3d---------------------------- rmdir "Dependencies/reactphysics3d" /S /Q git clone https://github.com/SHADE-DP/reactphysics3d.git "Dependencies/reactphysics3d" -if %_e%==7 (goto :done) else (goto :imgui) +if %_e%==6 (goto :done) else (goto :imgui) :imgui echo -----------------------imgui---------------------------- rmdir "Dependencies/imgui" /S /Q git clone https://github.com/SHADE-DP/imgui.git "Dependencies/imgui" -if %_e%==8 (goto :done) else (goto :imguizmo) +if %_e%==7 (goto :done) else (goto :imguizmo) :imguizmo echo -----------------------imguizmo---------------------------- rmdir "Dependencies/imguizmo" /S /Q git clone https://github.com/SHADE-DP/ImGuizmo.git "Dependencies/imguizmo" -if %_e%==9 (goto :done) else (goto :imnodes) +if %_e%==8 (goto :done) else (goto :imnodes) :imnodes echo -----------------------imnodes---------------------------- rmdir "Dependencies/imnodes" /S /Q git clone https://github.com/SHADE-DP/imnodes.git "Dependencies/imnodes" -if %_e%==10 (goto :done) else (goto :tracy) +if %_e%==9 (goto :done) else (goto :tracy) :tracy echo -----------------------tracy---------------------------- rmdir "Dependencies/tracy" /S /Q git clone https://github.com/SHADE-DP/tracy.git "Dependencies/tracy" -if %_e%==11 (goto :done) else (goto :RTTR) +if %_e%==10 (goto :done) else (goto :RTTR) :RTTR echo -----------------------RTTR---------------------------- rmdir "Dependencies/RTTR" /S /Q git clone https://github.com/SHADE-DP/RTTR.git "Dependencies/RTTR" -if %_e%==12 (goto :done) else (goto :yamlcpp) +if %_e%==11 (goto :done) else (goto :yamlcpp) :yamlcpp echo -----------------------yamlcpp---------------------------- rmdir "Dependencies/yamlcpp" /S /Q git clone https://github.com/SHADE-DP/yaml-cpp.git "Dependencies/yamlcpp" -if %_e%==13 (goto :done) else (goto :SDL) +if %_e%==12 (goto :done) else (goto :SDL) :SDL echo -----------------------SDL---------------------------- diff --git a/Dependencies.lua b/Dependencies.lua index 712f1a89..d2d6cdfd 100644 --- a/Dependencies.lua +++ b/Dependencies.lua @@ -10,7 +10,6 @@ IncludeDir["tracy"] = "%{wks.location}/Dependencies/tracy" IncludeDir["VMA"] = "%{wks.location}/Dependencies/VMA" IncludeDir["yamlcpp"] = "%{wks.location}/Dependencies/yamlcpp/include" IncludeDir["RTTR"] = "%{wks.location}/Dependencies/RTTR" -IncludeDir["ktx"] = "%{wks.location}/Dependencies/ktx" IncludeDir["reactphysics3d"] = "%{wks.location}/Dependencies/reactphysics3d" IncludeDir["SDL"] = "%{wks.location}/Dependencies/SDL" IncludeDir["VULKAN"] = "$(VULKAN_SDK)" diff --git a/SHADE_Application/src/Application/SBApplication.cpp b/SHADE_Application/src/Application/SBApplication.cpp index 1bc1bcbd..057e851c 100644 --- a/SHADE_Application/src/Application/SBApplication.cpp +++ b/SHADE_Application/src/Application/SBApplication.cpp @@ -11,6 +11,7 @@ #include #include #include +#include namespace Sandbox { @@ -24,9 +25,9 @@ namespace Sandbox ) { //SHLOG_TITLE("Initialising SBApplication") - SHADE::SHSDLWindow::InitPlatform(); + SDL_Init(SDL_INIT_VIDEO); window.Create(hInstance, hPrevInstance, lpCmdLine, nCmdShow); - sdlWindow.CreateSDLWindow(window.GetHWND()); + SDL_CreateWindowFrom(window.GetHWND()); #ifdef SHEDITOR #else @@ -48,6 +49,7 @@ namespace Sandbox void SBApplication::Exit(void) { + SDL_DestroyWindow(sdlWindow); #ifdef SHEDITOR #else #endif diff --git a/SHADE_Application/src/Application/SBApplication.h b/SHADE_Application/src/Application/SBApplication.h index 65bcd582..9a6e4153 100644 --- a/SHADE_Application/src/Application/SBApplication.h +++ b/SHADE_Application/src/Application/SBApplication.h @@ -1,6 +1,6 @@ #ifndef SB_APPLICATION_H #define SB_APPLICATION_H -#include +#include #include "Graphics/Windowing/SHWindow.h" //using namespace SHADE; @@ -10,7 +10,7 @@ namespace Sandbox { private: SHADE::SHWindow window; - SHADE::SHSDLWindow sdlWindow; + SDL_Window* sdlWindow; //SHAppConfig config; public: SBApplication() = default; diff --git a/SHADE_Engine/src/Graphics/Windowing/SDL/SHSDLWindow.cpp b/SHADE_Engine/src/Graphics/Windowing/SDL/SHSDLWindow.cpp deleted file mode 100644 index 0725dd7a..00000000 --- a/SHADE_Engine/src/Graphics/Windowing/SDL/SHSDLWindow.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#include "SHpch.h" - -#include "SHSDLWindow.h" - -#include "Tools/SHLogger.h" - -namespace SHADE -{ - SHSDLWindow::~SHSDLWindow() - { - SDL_DestroyWindow(sdlWindow); - } - - void SHSDLWindow::InitPlatform(void) noexcept - { - SDL_Init(SDL_INIT_EVERYTHING); - } - - void SHSDLWindow::CreateSDLWindow(const char* title, int x, int y, int width, int height) noexcept - { - sdlWindow = SDL_CreateWindow(title, x, y, width, height, 0); - if (sdlWindow == nullptr) - { - SHLOG_ERROR("Failed to create window") - } - } - - void SHSDLWindow::CreateSDLWindow(HWND hwnd) noexcept - { - sdlWindow = SDL_CreateWindowFrom(hwnd); - if (sdlWindow == nullptr) - { - SHLOG_ERROR("Failed to create window from existing native Win32 Window") - } - } -} diff --git a/SHADE_Engine/src/Graphics/Windowing/SDL/SHSDLWindow.h b/SHADE_Engine/src/Graphics/Windowing/SDL/SHSDLWindow.h deleted file mode 100644 index d53bdcf9..00000000 --- a/SHADE_Engine/src/Graphics/Windowing/SDL/SHSDLWindow.h +++ /dev/null @@ -1,21 +0,0 @@ -#pragma once -#include -#define SDL_HINT_VIDEO_FOREIGN_WINDOW_VULKAN 0 -#include - -namespace SHADE -{ - class SHSDLWindow - { - public: - SHSDLWindow() = default; - ~SHSDLWindow(); - - static void InitPlatform(void) noexcept; - void CreateSDLWindow(const char* title, int x, int y, int width, int height) noexcept; - void CreateSDLWindow(HWND hwnd) noexcept; - - private: - SDL_Window* sdlWindow = nullptr; - }; -}