34 #ifndef _d3d10renderer_h_
35 #define _d3d10renderer_h_
37 #include "CEGUIBase.h"
38 #include "CEGUIRenderer.h"
39 #include "CEGUITexture.h"
43 #if _MSC_VER <= 1400 // VC8 and lower
46 #define WINAPI_INLINE WINAPI
48 #if _MSC_VER < 1400 // VC7.1 and lower
58 #define __in_ecount(THING)
59 #define __in_ecount_opt(THING)
60 #define __out_ecount(THING)
61 #define __out_ecount_opt(THING)
62 #define __inout_ecount(THING)
63 #define __inout_ecount_opt(THING)
65 #define __in_bcount_opt(THING)
66 #define __out_bcount_opt(THING)
67 #define __inout_bcount_opt(THING)
77 typedef ID3D10Buffer IDirect3DIndexBuffer;
78 typedef ID3D10Buffer IDirect3DVertexBuffer;
79 typedef D3D10_VIEWPORT D3DVIEWPORT;
80 typedef ID3D10VertexShader IDirect3DVertexShader;
81 typedef ID3D10PixelShader IDirect3DPixelShader;
82 typedef ID3D10Device* LPDIRECT3DDEVICE;
83 typedef ID3D10Texture2D* LPDIRECT3DTEXTURE2D;
84 typedef ID3D10Buffer* LPDIRECT3DBUFFER;
86 #if !defined(CEGUI_STATIC)
87 #ifdef DIRECTX10_GUIRENDERER_EXPORTS
88 #define DIRECTX10_GUIRENDERER_API __declspec(dllexport)
90 #define DIRECTX10_GUIRENDERER_API __declspec(dllimport)
93 #define DIRECTX10_GUIRENDERER_API
97 # pragma warning(push)
98 # pragma warning(disable : 4251)
108 class DirectX10Texture;
137 virtual void addQuad(
const Rect& dest_rect,
float z,
const Texture* tex,
142 virtual void doRender(
void);
145 virtual void clearRenderList(
void);
166 virtual void setQueueingEnabled(
bool setting)
167 { d_queueing = setting; }
170 virtual Texture* createTexture(
void);
174 const String& resourceGroup);
177 virtual Texture* createTexture(
float size);
180 virtual void destroyTexture(
Texture* texture);
183 virtual void destroyAllTextures(
void);
186 LPDIRECT3DDEVICE getDevice(
void)
const
197 virtual bool isQueueingEnabled(
void)
const
198 {
return d_queueing; }
207 virtual float getWidth(
void)
const
208 {
return d_display_area.getWidth(); }
217 virtual float getHeight(
void)
const
218 {
return d_display_area.getHeight(); }
227 virtual Size getSize(
void)
const
228 {
return d_display_area.getSize(); }
240 virtual Rect getRect(
void)
const
241 {
return d_display_area; }
251 virtual uint getMaxTextureSize(
void)
const
252 {
return d_maxTextureSize; }
261 virtual uint getHorzScreenDPI(
void)
const
271 virtual uint getVertScreenDPI(
void)
const
291 void setDisplaySize(
const Size& sz);
298 static const int VERTEX_PER_QUAD;
300 static const int VERTEX_PER_TRIANGLE;
302 static const int VERTEXBUFFER_CAPACITY;
320 LPDIRECT3DTEXTURE2D texture;
321 ID3D10ShaderResourceView* resview;
328 ulong bottomRightCol;
331 bool operator<(
const QuadInfo& other)
const
342 void renderVBuffer(ID3D10ShaderResourceView *tex);
345 void renderQuadDirect(
const Rect& dest_rect,
float z,
const Texture* tex,
346 const Rect& texture_rect,
const ColourRect& colours,
350 Size getViewportSize(
void);
353 void constructor_impl(LPDIRECT3DDEVICE device,
const Size& display_size);
355 HRESULT CreateVertexBuffer();
363 typedef std::multiset<QuadInfo> QuadList;
369 LPDIRECT3DDEVICE d_device;
371 LPDIRECT3DTEXTURE2D d_currTexture;
372 ID3D10ShaderResourceView* d_currSRView;
374 LPDIRECT3DBUFFER d_buffer;
377 ID3D10InputLayout* d_InputLayout;
379 ID3D10Effect* d_Effect;
380 ID3D10EffectTechnique* d_Technique;
381 ID3D10EffectShaderResourceVariable* d_DiffuseTexVariable;
382 ID3D10EffectScalarVariable* d_WindowHeight;
383 ID3D10EffectScalarVariable* d_WindowWidth;
385 std::list<DirectX10Texture*> d_texturelist;
387 uint d_maxTextureSize;
392 #if defined(_MSC_VER)
393 # pragma warning(pop)
396 #endif // end of guard _d3d10renderer_h_