From 5e4eabc58232ef636d3c9c37ab0c935c0cb6346d Mon Sep 17 00:00:00 2001 From: Sri Sham Haran Date: Thu, 15 Sep 2022 00:48:43 +0800 Subject: [PATCH] [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; + }; +}