BsD3D11RenderWindowManager.cpp 1.3 KB

123456789101112131415161718192021222324252627282930313233
  1. //__________________________ Banshee Project - A modern game development toolkit _________________________________//
  2. //_____________________________________ www.banshee-project.com __________________________________________________//
  3. //________________________ Copyright (c) 2014 Marko Pintera. All rights reserved. ________________________________//
  4. #include "BsD3D11RenderWindowManager.h"
  5. #include "BsD3D11RenderSystem.h"
  6. #include "BsD3D11RenderWindow.h"
  7. #include "BsAsyncOp.h"
  8. namespace BansheeEngine
  9. {
  10. D3D11RenderWindowManager::D3D11RenderWindowManager(D3D11RenderSystem* renderSystem)
  11. :mRenderSystem(renderSystem)
  12. {
  13. assert(mRenderSystem != nullptr);
  14. }
  15. RenderWindowPtr D3D11RenderWindowManager::createImpl(RENDER_WINDOW_DESC& desc, RenderWindowPtr parentWindow)
  16. {
  17. RenderSystem* rs = RenderSystem::instancePtr();
  18. D3D11RenderSystem* d3d11rs = static_cast<D3D11RenderSystem*>(rs);
  19. if(parentWindow != nullptr)
  20. {
  21. HWND hWnd;
  22. parentWindow->getCustomAttribute("WINDOW", &hWnd);
  23. desc.platformSpecific["parentWindowHandle"] = toString((UINT64)hWnd);
  24. }
  25. // Create the window
  26. D3D11RenderWindow* renderWindow = new (bs_alloc<D3D11RenderWindow, PoolAlloc>()) D3D11RenderWindow(desc, d3d11rs->getPrimaryDevice(), d3d11rs->getDXGIFactory());
  27. return bs_core_ptr<D3D11RenderWindow, PoolAlloc>(renderWindow);
  28. }
  29. }