CmD3D11RenderWindowManager.cpp 903 B

12345678910111213141516171819202122232425262728
  1. #include "CmD3D11RenderWindowManager.h"
  2. #include "CmD3D11RenderSystem.h"
  3. #include "CmD3D11RenderWindow.h"
  4. #include "CmAsyncOp.h"
  5. namespace CamelotEngine
  6. {
  7. D3D11RenderWindowManager::D3D11RenderWindowManager(D3D11RenderSystem* renderSystem)
  8. :mRenderSystem(renderSystem)
  9. {
  10. assert(mRenderSystem != nullptr);
  11. }
  12. void D3D11RenderWindowManager::createImpl(const RENDER_WINDOW_DESC& desc, AsyncOp& asyncOp)
  13. {
  14. RenderSystem* rs = RenderSystem::instancePtr();
  15. D3D11RenderSystem* d3d11rs = static_cast<D3D11RenderSystem*>(rs);
  16. // Create the window
  17. D3D11RenderWindow* renderWindow = new D3D11RenderWindow(d3d11rs->getPrimaryDevice(), d3d11rs->getDXGIFactory());
  18. renderWindow->initialize(desc);
  19. d3d11rs->attachRenderTarget(*renderWindow);
  20. D3D11RenderWindowPtr winPtr(renderWindow);
  21. asyncOp.completeOperation(std::static_pointer_cast<RenderWindow>(winPtr));
  22. }
  23. }