PolyMaterial.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /*
  2. * PolyMaterial.h
  3. * Poly
  4. *
  5. * Created by Ivan Safrin on 9/19/08.
  6. * Copyright 2008 __MyCompanyName__. All rights reserved.
  7. *
  8. */
  9. // @package Materials
  10. #pragma once
  11. #include "PolyGlobals.h"
  12. #include <string>
  13. #include <vector>
  14. #include "PolyTexture.h"
  15. #include "PolyShader.h"
  16. #include "PolyResource.h"
  17. using std::string;
  18. using std::vector;
  19. namespace Polycode {
  20. class _PolyExport Material : public Resource {
  21. public:
  22. Material(string name);
  23. virtual ~Material();
  24. void addShader(Shader *shader,ShaderBinding *shaderBinding);
  25. unsigned int getNumShaders();
  26. void addShaderRenderTarget(ShaderRenderTarget *newTarget);
  27. int getNumShaderRenderTargets();
  28. ShaderRenderTarget *getShaderRenderTarget(unsigned int index);
  29. string getName();
  30. Shader *getShader(unsigned int index);
  31. ShaderBinding *getShaderBinding(unsigned int index);
  32. void loadMaterial(string fileName);
  33. protected:
  34. vector<Shader*> materialShaders;
  35. vector<ShaderBinding*> shaderBindings;
  36. vector<ShaderRenderTarget*> renderTargets;
  37. string name;
  38. };
  39. }