1 /*! 2 @file 3 @author Ustinov Igor aka Igor', DadyaIgor 4 @date 09/2011 5 */ 6 #ifndef MYGUI_DIRECTX11_RENDER_MANAGER_H_ 7 #define MYGUI_DIRECTX11_RENDER_MANAGER_H_ 8 9 #include "MyGUI_Prerequest.h" 10 #include "MyGUI_RenderFormat.h" 11 #include "MyGUI_IVertexBuffer.h" 12 #include "MyGUI_RenderManager.h" 13 14 struct ID3D11Device; 15 struct ID3D11DeviceContext; 16 struct ID3D11VertexShader; 17 struct ID3D11PixelShader; 18 struct ID3D11SamplerState; 19 struct ID3D11BlendState; 20 struct ID3D11RasterizerState; 21 struct ID3D11DepthStencilState; 22 struct ID3D11InputLayout; 23 24 namespace MyGUI 25 { 26 27 class DirectX11RenderManager : 28 public RenderManager, 29 public IRenderTarget 30 { 31 public: 32 DirectX11RenderManager(); 33 34 void initialise(ID3D11Device* device); 35 void shutdown(); 36 getInstance()37 static DirectX11RenderManager& getInstance() 38 { 39 return *getInstancePtr(); 40 } getInstancePtr()41 static DirectX11RenderManager* getInstancePtr() 42 { 43 return static_cast<DirectX11RenderManager*>(RenderManager::getInstancePtr()); 44 } 45 46 /** @see RenderManager::getViewSize */ getViewSize()47 virtual const IntSize& getViewSize() const 48 { 49 return mViewSize; 50 } 51 52 /** @see RenderManager::getVertexFormat */ getVertexFormat()53 virtual VertexColourType getVertexFormat() 54 { 55 return mVertexFormat; 56 } 57 58 /** @see RenderManager::createVertexBuffer */ 59 virtual IVertexBuffer* createVertexBuffer(); 60 /** @see RenderManager::destroyVertexBuffer */ 61 virtual void destroyVertexBuffer(IVertexBuffer* _buffer); 62 63 /** @see RenderManager::createTexture */ 64 virtual ITexture* createTexture(const std::string& _name); 65 /** @see RenderManager::destroyTexture */ 66 virtual void destroyTexture(ITexture* _texture); 67 /** @see RenderManager::getTexture */ 68 virtual ITexture* getTexture(const std::string& _name); 69 70 /** @see RenderManager::isFormatSupported */ 71 virtual bool isFormatSupported(PixelFormat _format, TextureUsage _usage); 72 73 /** @see IRenderTarget::begin */ 74 virtual void begin(); 75 /** @see IRenderTarget::end */ 76 virtual void end(); 77 78 /** @see IRenderTarget::doRender */ 79 virtual void doRender(IVertexBuffer* _buffer, ITexture* _texture, size_t _count); 80 81 /** @see IRenderTarget::getInfo */ getInfo()82 virtual const RenderTargetInfo& getInfo() 83 { 84 return mInfo; 85 } 86 87 /** @see RenderManager::setViewSize */ 88 void setViewSize(int _width, int _height) override; 89 90 /*internal:*/ 91 void drawOneFrame(); 92 93 private: 94 void destroyAllResources(); 95 96 public: 97 ID3D11Device* mpD3DDevice; 98 ID3D11DeviceContext* mpD3DContext; 99 ID3D11VertexShader* mVertexShader0, *mVertexShader1; 100 ID3D11PixelShader* mPixelShader0, *mPixelShader1; 101 ID3D11SamplerState* mSamplerState; 102 ID3D11BlendState* mBlendState; 103 ID3D11RasterizerState* mRasterizerState; 104 ID3D11DepthStencilState* mDepthStencilState; 105 ID3D11InputLayout* mInputLayout0, *mInputLayout1; 106 107 private: 108 IntSize mViewSize; 109 VertexColourType mVertexFormat; 110 RenderTargetInfo mInfo; 111 bool mUpdate; 112 113 typedef std::map<std::string, ITexture*> MapTexture; 114 115 MapTexture mTextures; 116 bool mIsInitialise; 117 }; 118 119 } // namespace MyGUI 120 121 #endif // MYGUI_DIRECTX11_RENDER_MANAGER_H_ 122