1 // Copyright (C) 2002-2012 Nikolaus Gebhardt 2 // This file is part of the "Irrlicht Engine". 3 // For conditions of distribution and use, see copyright notice in irrlicht.h 4 5 #ifndef __C_SOFTWARE2_MATERIAL_RENDERER_H_INCLUDED__ 6 #define __C_SOFTWARE2_MATERIAL_RENDERER_H_INCLUDED__ 7 8 #include "SoftwareDriver2_compile_config.h" 9 10 #include "IMaterialRenderer.h" 11 #include "CSoftwareDriver2.h" 12 13 namespace irr 14 { 15 namespace video 16 { 17 18 //! Base class for all internal Software2 material renderers 19 class CSoftware2MaterialRenderer : public IMaterialRenderer 20 { 21 public: 22 23 //! Constructor CSoftware2MaterialRenderer(video::CBurningVideoDriver * driver)24 CSoftware2MaterialRenderer(video::CBurningVideoDriver* driver) 25 : Driver(driver) 26 { 27 } 28 29 protected: 30 31 video::CBurningVideoDriver* Driver; 32 }; 33 34 //! solid material renderer 35 class CSoftware2MaterialRenderer_SOLID : public CSoftware2MaterialRenderer 36 { 37 public: CSoftware2MaterialRenderer_SOLID(video::CBurningVideoDriver * driver)38 CSoftware2MaterialRenderer_SOLID ( video::CBurningVideoDriver* driver ) 39 :CSoftware2MaterialRenderer ( driver ) {} 40 41 //! Returns if the material is transparent. isTransparent()42 virtual bool isTransparent() const 43 { 44 return false; 45 } 46 47 }; 48 49 50 51 //! Transparent material renderer 52 class CSoftware2MaterialRenderer_TRANSPARENT_ADD_COLOR : public CSoftware2MaterialRenderer 53 { 54 public: CSoftware2MaterialRenderer_TRANSPARENT_ADD_COLOR(video::CBurningVideoDriver * driver)55 CSoftware2MaterialRenderer_TRANSPARENT_ADD_COLOR ( video::CBurningVideoDriver* driver ) 56 : CSoftware2MaterialRenderer ( driver ) {} 57 58 59 //! Returns if the material is transparent. isTransparent()60 virtual bool isTransparent() const 61 { 62 return true; 63 } 64 65 }; 66 67 //! unsupported material renderer 68 class CSoftware2MaterialRenderer_UNSUPPORTED : public CSoftware2MaterialRenderer 69 { 70 public: CSoftware2MaterialRenderer_UNSUPPORTED(video::CBurningVideoDriver * driver)71 CSoftware2MaterialRenderer_UNSUPPORTED ( video::CBurningVideoDriver* driver ) 72 : CSoftware2MaterialRenderer ( driver ) {} 73 getRenderCapability()74 virtual s32 getRenderCapability() const { return 1; } 75 76 }; 77 78 //! unsupported material renderer 79 class CBurningShader_REFERENCE : public CSoftware2MaterialRenderer 80 { 81 public: CBurningShader_REFERENCE(video::CBurningVideoDriver * driver)82 CBurningShader_REFERENCE ( video::CBurningVideoDriver* driver ) 83 : CSoftware2MaterialRenderer ( driver ) {} 84 OnSetMaterial(const SMaterial & material,const SMaterial & lastMaterial,bool resetAllRenderstates,IMaterialRendererServices * services)85 virtual void OnSetMaterial(const SMaterial& material, const SMaterial& lastMaterial, 86 bool resetAllRenderstates, IMaterialRendererServices* services) 87 { 88 } 89 OnUnsetMaterial()90 virtual void OnUnsetMaterial() 91 { 92 } 93 isTransparent()94 virtual bool isTransparent() const 95 { 96 return false; 97 } 98 OnRender(IMaterialRendererServices * service,E_VERTEX_TYPE vtxtype)99 virtual bool OnRender(IMaterialRendererServices* service, E_VERTEX_TYPE vtxtype) 100 { 101 return true; 102 }; 103 104 getRenderCapability()105 virtual s32 getRenderCapability() const 106 { 107 return 1; 108 } 109 110 }; 111 112 113 114 } // end namespace video 115 } // end namespace irr 116 117 #endif 118 119