1 #ifndef _SHARED_D3D9_MODELRENDERERD3D9_H_
2 #define _SHARED_D3D9_MODELRENDERERD3D9_H_
3 
4 #include "model_renderer.h"
5 #include "model.h"
6 
7 #include <d3d9.h>
8 
9 namespace Shared{ namespace Graphics{ namespace D3d9{
10 
11 // ===============================
12 //	class ModelRendererD3d9
13 // ===============================
14 
15 class ModelRendererD3d9: public ModelRenderer{
16 private:
17 	static const int defBufferPointCount= 100; //buffer size in vertices
18 	static const int defBufferIndexCount= 100; //buffer size in vertices
19 
20 	struct CustomVertexPNTT{
21 		Vec3f vertex;
22 		Vec3f normal;
23 		Vec2f texCoord;
24 		Vec3f tangent;
25 	};
26 
27 private:
28 	bool rendering;
29 	int bufferPointCount;
30 	int bufferIndexCount;
31 
32 	IDirect3DDevice9 *d3dDevice;
33 	IDirect3DVertexBuffer9 *d3dVertexBuffer;
34 	IDirect3DIndexBuffer9 *d3dIndexBuffer;
35 	IDirect3DVertexDeclaration9 *d3dVertexDeclarationPNT;
36 	IDirect3DVertexDeclaration9 *d3dVertexDeclarationPNTT;
37 
38 public:
39 	ModelRendererD3d9();
40 	~ModelRendererD3d9();
41 	virtual void begin(bool renderNormals= true, bool renderTextures= true, bool renderColors= true);
42 	virtual void end();
43 	virtual void render(const Model *model);
44 	virtual void renderNormalsOnly(const Model *model);
45 
46 private:
47 	void renderMesh(const Mesh *mesh);
48 	void readyBuffers(int newPointCount, int newIndexCount);
49 };
50 
51 }}}//end namespace
52 
53 #endif