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 "PolyString.h"
  12. #include "PolyGlobals.h"
  13. #include <string>
  14. #include <vector>
  15. #include "PolyTexture.h"
  16. #include "PolyShader.h"
  17. #include "PolyResource.h"
  18. using std::string;
  19. using std::vector;
  20. namespace Polycode {
  21. class _PolyExport Material : public Resource {
  22. public:
  23. Material(String name);
  24. virtual ~Material();
  25. void addShader(Shader *shader,ShaderBinding *shaderBinding);
  26. unsigned int getNumShaders();
  27. void addShaderRenderTarget(ShaderRenderTarget *newTarget);
  28. int getNumShaderRenderTargets();
  29. ShaderRenderTarget *getShaderRenderTarget(unsigned int index);
  30. String getName();
  31. Shader *getShader(unsigned int index);
  32. ShaderBinding *getShaderBinding(unsigned int index);
  33. void loadMaterial(String fileName);
  34. protected:
  35. vector<Shader*> materialShaders;
  36. vector<ShaderBinding*> shaderBindings;
  37. vector<ShaderRenderTarget*> renderTargets;
  38. String name;
  39. };
  40. }