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