00001 // Copyright (C) 2002-2012 Nikolaus Gebhardt 00002 // This file is part of the "Irrlicht Engine". 00003 // For conditions of distribution and use, see copyright notice in irrlicht.h 00004 00005 #ifndef __I_MATERIAL_RENDERER_H_INCLUDED__ 00006 #define __I_MATERIAL_RENDERER_H_INCLUDED__ 00007 00008 #include "IReferenceCounted.h" 00009 #include "SMaterial.h" 00010 #include "S3DVertex.h" 00011 00012 namespace irr 00013 { 00014 namespace video 00015 { 00016 00017 class IVideoDriver; 00018 class IMaterialRendererServices; 00019 00021 00024 class IMaterialRenderer : public virtual IReferenceCounted 00025 { 00026 public: 00027 00029 00050 virtual void OnSetMaterial(const SMaterial& material, const SMaterial& lastMaterial, 00051 bool resetAllRenderstates, IMaterialRendererServices* services) {} 00052 00054 00071 virtual bool OnRender(IMaterialRendererServices* service, E_VERTEX_TYPE vtxtype) { return true; } 00072 00074 00076 virtual void OnUnsetMaterial() {} 00077 00079 00081 virtual bool isTransparent() const { return false; } 00082 00084 00093 virtual s32 getRenderCapability() const { return 0; } 00094 }; 00095 00096 00097 } // end namespace video 00098 } // end namespace irr 00099 00100 #endif 00101