All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
IMaterial.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Rendering.h"
6 #include "IdTypes.h"
7 #include "GLState.h"
8 #include <string>
9 
10 namespace Eegeo
11 {
12  namespace Rendering
13  {
14  namespace Materials
15  {
16  class IMaterial
17  {
18  public:
19  virtual const TMaterialId GetId() const = 0;
20 
21  virtual const Shader& GetShader() const = 0;
22 
23  virtual void SetState(Rendering::GLState& glState) const = 0;
24 
25  virtual void SetStatePerRenderable(const Rendering::RenderableBase* renderableBase, Rendering::GLState& glState) const = 0;
26 
27  virtual const std::string& GetName() const = 0;
28 
29  virtual ~IMaterial() { };
30  };
31  }
32  }
33 }