Crazy Eddie's GUI System  0.8.4
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
RendererModules/Direct3D11/TextureTarget.h
1 /***********************************************************************
2  created: Wed May 5 2010
3 *************************************************************************/
4 /***************************************************************************
5  * Copyright (C) 2004 - 2011 Paul D Turner & The CEGUI Development Team
6  *
7  * Permission is hereby granted, free of charge, to any person obtaining
8  * a copy of this software and associated documentation files (the
9  * "Software"), to deal in the Software without restriction, including
10  * without limitation the rights to use, copy, modify, merge, publish,
11  * distribute, sublicense, and/or sell copies of the Software, and to
12  * permit persons to whom the Software is furnished to do so, subject to
13  * the following conditions:
14  *
15  * The above copyright notice and this permission notice shall be
16  * included in all copies or substantial portions of the Software.
17  *
18  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
21  * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
22  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
23  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
24  * OTHER DEALINGS IN THE SOFTWARE.
25  ***************************************************************************/
26 #ifndef _CEGUIDirect3D11TextureTarget_h_
27 #define _CEGUIDirect3D11TextureTarget_h_
28 
29 #include "CEGUI/RendererModules/Direct3D11/RenderTarget.h"
30 #include "../../TextureTarget.h"
31 
32 #if defined(_MSC_VER)
33 # pragma warning(push)
34 # pragma warning(disable : 4250)
35 # pragma warning(disable : 4251)
36 #endif
37 
38 // d3d forward refs
39 struct ID3D11Texture2D;
40 struct ID3D11RenderTargetView;
41 struct ID3D11DepthStencilView;
42 
43 // Start of CEGUI namespace section
44 namespace CEGUI
45 {
46 class Direct3D11Texture;
47 
49 class D3D11_GUIRENDERER_API Direct3D11TextureTarget : public Direct3D11RenderTarget<TextureTarget>
50 {
51 public:
53  virtual ~Direct3D11TextureTarget();
54 
55  // overrides from Direct3D10RenderTarget
56  void activate();
57  void deactivate();
58  // implementation of RenderTarget interface
59  bool isImageryCache() const;
60  // implementation of TextureTarget interface
61  void clear();
62  Texture& getTexture() const;
63  void declareRenderSize(const Sizef& sz);
64  bool isRenderingInverted() const;
65 
66 protected:
68  static const float DEFAULT_SIZE;
70  static uint s_textureNumber;
72  static String generateTextureName();
73 
75  void initialiseRenderTexture();
77  void cleanupRenderTexture();
79  void resizeRenderTexture();
81  void enableRenderTexture();
83  void disableRenderTexture();
84 
86  ID3D11Texture2D* d_texture;
88  ID3D11RenderTargetView* d_renderTargetView;
92  ID3D11RenderTargetView* d_previousRenderTargetView;
94  ID3D11DepthStencilView* d_previousDepthStencilView;
95 };
96 
97 } // End of CEGUI namespace section
98 
99 #if defined(_MSC_VER)
100 # pragma warning(pop)
101 #endif
102 
103 #endif // end of guard _CEGUIDirect3D11TextureTarget_h_