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