00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _CEGUIDirect3D10Renderer_h_
00029 #define _CEGUIDirect3D10Renderer_h_
00030
00031 #include "../../CEGUIRenderer.h"
00032 #include "../../CEGUISize.h"
00033 #include "../../CEGUIVector.h"
00034 #include <vector>
00035
00036 #if (defined( __WIN32__ ) || defined( _WIN32 )) && !defined(CEGUI_STATIC)
00037 # ifdef DIRECT3D10_GUIRENDERER_EXPORTS
00038 # define D3D10_GUIRENDERER_API __declspec(dllexport)
00039 # else
00040 # define D3D10_GUIRENDERER_API __declspec(dllimport)
00041 # endif
00042 #else
00043 # define D3D10_GUIRENDERER_API
00044 #endif
00045
00046 #if defined(_MSC_VER)
00047 # pragma warning(push)
00048 # pragma warning(disable : 4251)
00049 #endif
00050
00051
00052 struct ID3D10Device;
00053 struct ID3D10Effect;
00054 struct ID3D10EffectTechnique;
00055 struct ID3D10InputLayout;
00056 struct ID3D10EffectShaderResourceVariable;
00057 struct ID3D10EffectMatrixVariable;
00058 struct ID3D10ShaderResourceView;
00059 struct D3DXMATRIX;
00060
00061
00062 namespace CEGUI
00063 {
00064 class Direct3D10GeometryBuffer;
00065 class Direct3D10Texture;
00066
00068 class D3D10_GUIRENDERER_API Direct3D10Renderer : public Renderer
00069 {
00070 public:
00075 static Direct3D10Renderer& create(ID3D10Device* device);
00076
00084 static void destroy(Direct3D10Renderer& renderer);
00085
00087 ID3D10Device& getDirect3DDevice() const;
00088
00090 void bindTechniquePass();
00092 void setCurrentTextureShaderResource(ID3D10ShaderResourceView* srv);
00094 void setProjectionMatrix(D3DXMATRIX& matrix);
00096 void setWorldMatrix(D3DXMATRIX& matrix);
00097
00098
00099 RenderingRoot& getDefaultRenderingRoot();
00100 GeometryBuffer& createGeometryBuffer();
00101 void destroyGeometryBuffer(const GeometryBuffer& buffer);
00102 void destroyAllGeometryBuffers();
00103 TextureTarget* createTextureTarget();
00104 void destroyTextureTarget(TextureTarget* target);
00105 void destroyAllTextureTargets();
00106 Texture& createTexture();
00107 Texture& createTexture(const String& filename, const String& resourceGroup);
00108 Texture& createTexture(const Size& size);
00109 void destroyTexture(Texture& texture);
00110 void destroyAllTextures();
00111 void beginRendering();
00112 void endRendering();
00113 void setDisplaySize(const Size& sz);
00114 const Size& getDisplaySize() const;
00115 const Vector2& getDisplayDPI() const;
00116 uint getMaxTextureSize() const;
00117 const String& getIdentifierString() const;
00118
00119 protected:
00121 Direct3D10Renderer(ID3D10Device* device);
00122
00124 ~Direct3D10Renderer();
00125
00127 Size getViewportSize();
00128
00130 static String d_rendererID;
00132 ID3D10Device* d_device;
00134 Size d_displaySize;
00136 Vector2 d_displayDPI;
00138 RenderTarget* d_defaultTarget;
00140 RenderingRoot* d_defaultRoot;
00142 typedef std::vector<TextureTarget*> TextureTargetList;
00144 TextureTargetList d_textureTargets;
00146 typedef std::vector<Direct3D10GeometryBuffer*> GeometryBufferList;
00148 GeometryBufferList d_geometryBuffers;
00150 typedef std::vector<Direct3D10Texture*> TextureList;
00152 TextureList d_textures;
00154 ID3D10Effect* d_effect;
00156 ID3D10EffectTechnique* d_technique;
00158 ID3D10InputLayout* d_inputLayout;
00160 ID3D10EffectShaderResourceVariable* d_boundTextureVariable;
00162 ID3D10EffectMatrixVariable* d_worldMatrixVariable;
00164 ID3D10EffectMatrixVariable* d_projectionMatrixVariable;
00165 };
00166
00167
00168 }
00169
00170 #if defined(_MSC_VER)
00171 # pragma warning(pop)
00172 #endif
00173
00174 #endif // end of guard _CEGUIDirect3D10Renderer_h_