BsVulkanRenderWindowManager.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "Managers/BsVulkanRenderWindowManager.h"
  4. #if BS_PLATFORM == BS_PLATFORM_WIN32
  5. #include "Win32/BsWin32RenderWindow.h"
  6. #elif BS_PLATFORM == BS_PLATFORM_LINUX
  7. #include "Linux/BsLinuxRenderWindow.h"
  8. #endif
  9. namespace bs
  10. {
  11. VulkanRenderWindowManager::VulkanRenderWindowManager()
  12. { }
  13. SPtr<RenderWindow> VulkanRenderWindowManager::createImpl(RENDER_WINDOW_DESC& desc, UINT32 windowId, const SPtr<RenderWindow>& parentWindow)
  14. {
  15. if(parentWindow != nullptr)
  16. {
  17. UINT64 hWnd;
  18. parentWindow->getCustomAttribute("WINDOW", &hWnd);
  19. desc.platformSpecific["parentWindowHandle"] = toString(hWnd);
  20. }
  21. // Create the window
  22. #if BS_PLATFORM == BS_PLATFORM_WIN32
  23. Win32RenderWindow* renderWindow = new (bs_alloc<Win32RenderWindow>()) Win32RenderWindow(desc, windowId);
  24. return bs_core_ptr<Win32RenderWindow>(renderWindow);
  25. #elif BS_PLATFORM == BS_PLATFORM_LINUX
  26. LinuxRenderWindow* renderWindow = new (bs_alloc<LinuxRenderWindow>()) LinuxRenderWindow(desc, windowId);
  27. return bs_core_ptr<LinuxRenderWindow>(renderWindow);
  28. #endif
  29. }
  30. namespace ct
  31. {
  32. VulkanRenderWindowManager::VulkanRenderWindowManager(VulkanRenderAPI& renderAPI)
  33. :mRenderAPI(renderAPI)
  34. { }
  35. SPtr<RenderWindow> VulkanRenderWindowManager::createInternal(RENDER_WINDOW_DESC& desc, UINT32 windowId)
  36. {
  37. // Create the window
  38. #if BS_PLATFORM == BS_PLATFORM_WIN32
  39. Win32RenderWindow* renderWindow =
  40. new (bs_alloc<Win32RenderWindow>()) Win32RenderWindow(desc, windowId, mRenderAPI);
  41. SPtr<Win32RenderWindow> renderWindowPtr = bs_shared_ptr<Win32RenderWindow>(renderWindow);
  42. #elif BS_PLATFORM == BS_PLATFORM_LINUX
  43. LinuxRenderWindow* renderWindow =
  44. new (bs_alloc<LinuxRenderWindow>()) LinuxRenderWindow(desc, windowId, mRenderAPI);
  45. SPtr<LinuxRenderWindow> renderWindowPtr = bs_shared_ptr<LinuxRenderWindow>(renderWindow);
  46. #endif
  47. renderWindowPtr->_setThisPtr(renderWindowPtr);
  48. windowCreated(renderWindow);
  49. return renderWindowPtr;
  50. }
  51. }
  52. }