BsD3D11RenderWindowManager.cpp 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #include "BsD3D11RenderWindowManager.h"
  2. #include "BsD3D11RenderAPI.h"
  3. #include "BsD3D11RenderWindow.h"
  4. #include "BsAsyncOp.h"
  5. namespace BansheeEngine
  6. {
  7. D3D11RenderWindowManager::D3D11RenderWindowManager(D3D11RenderAPI* renderSystem)
  8. :mRenderSystem(renderSystem)
  9. {
  10. assert(mRenderSystem != nullptr);
  11. }
  12. RenderWindowPtr D3D11RenderWindowManager::createImpl(RENDER_WINDOW_DESC& desc, UINT32 windowId, const RenderWindowPtr& parentWindow)
  13. {
  14. RenderAPICore* rs = RenderAPICore::instancePtr();
  15. D3D11RenderAPI* d3d11rs = static_cast<D3D11RenderAPI*>(rs);
  16. if(parentWindow != nullptr)
  17. {
  18. UINT64 hWnd;
  19. parentWindow->getCustomAttribute("WINDOW", &hWnd);
  20. desc.platformSpecific["parentWindowHandle"] = toString(hWnd);
  21. }
  22. // Create the window
  23. D3D11RenderWindow* renderWindow = new (bs_alloc<D3D11RenderWindow>()) D3D11RenderWindow(desc, windowId, d3d11rs->getPrimaryDevice(), d3d11rs->getDXGIFactory());
  24. return bs_core_ptr<D3D11RenderWindow>(renderWindow);
  25. }
  26. D3D11RenderWindowCoreManager::D3D11RenderWindowCoreManager(D3D11RenderAPI* renderSystem)
  27. :mRenderSystem(renderSystem)
  28. {
  29. assert(mRenderSystem != nullptr);
  30. }
  31. SPtr<RenderWindowCore> D3D11RenderWindowCoreManager::createInternal(RENDER_WINDOW_DESC& desc, UINT32 windowId)
  32. {
  33. RenderAPICore* rs = RenderAPICore::instancePtr();
  34. D3D11RenderAPI* d3d11rs = static_cast<D3D11RenderAPI*>(rs);
  35. // Create the window
  36. D3D11RenderWindowCore* renderWindow = new (bs_alloc<D3D11RenderWindowCore>()) D3D11RenderWindowCore(desc, windowId, d3d11rs->getPrimaryDevice(), d3d11rs->getDXGIFactory());
  37. SPtr<D3D11RenderWindowCore> renderWindowPtr = bs_shared_ptr<D3D11RenderWindowCore>(renderWindow);
  38. renderWindowPtr->_setThisPtr(renderWindowPtr);
  39. windowCreated(renderWindow);
  40. return renderWindowPtr;
  41. }
  42. }