PolyMaterialManager.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /*
  2. * PolyMaterialManager.h
  3. * TAU
  4. *
  5. * Created by Ivan Safrin on 3/13/08.
  6. * Copyright 2008 __MyCompanyName__. All rights reserved.
  7. *
  8. */
  9. // @package Services
  10. #pragma once
  11. #include "PolyString.h"
  12. #include "PolyGlobals.h"
  13. #include "PolyCoreServices.h"
  14. #include "PolyTexture.h"
  15. #include "PolyCubemap.h"
  16. #include "PolyMaterial.h"
  17. #include "PolyShader.h"
  18. #include "PolyFixedShader.h"
  19. #include "PolyModule.h"
  20. #include "PolyImage.h"
  21. #include "tinyxml.h"
  22. #include "PolyUtil.h"
  23. #include <vector>
  24. using namespace std;
  25. namespace Polycode {
  26. class Texture;
  27. class SceneRenderTexture;
  28. class _PolyExport MaterialManager {
  29. public:
  30. MaterialManager();
  31. ~MaterialManager();
  32. void Update(int elapsed);
  33. Texture *createFramebufferTexture(int width, int height, int type);
  34. Texture *createTexture(int width, int height, char *imageData, bool clamp=true, int type=Image::IMAGE_RGBA);
  35. Texture *createNewTexture(int width, int height, bool clamp=true, int type=Image::IMAGE_RGBA);
  36. Texture *createTextureFromImage(Image *image, bool clamp=true);
  37. Texture *createTextureFromFile(String fileName);
  38. void deleteTexture(Texture *texture);
  39. void reloadTextures();
  40. void reloadProgramsAndTextures();
  41. void reloadPrograms();
  42. void addShaderModule(PolycodeShaderModule *module);
  43. //SceneRenderTexture *createRenderTexture(Scene *targetScene, Camera *targetCamera, int renderWidth,int renderHeight);
  44. Texture *getTextureByResourcePath(String resourcePath);
  45. // cubemaps
  46. Cubemap *cubemapFromXMLNode(TiXmlNode *node);
  47. // materials
  48. void loadMaterialsFromFile(String fileName);
  49. Material *materialFromXMLNode(TiXmlNode *node);
  50. Shader *setShaderFromXMLNode(TiXmlNode *node);
  51. Shader *createShaderFromXMLNode(TiXmlNode *node);
  52. private:
  53. vector<Texture*> textures;
  54. vector<Material*> materials;
  55. vector <PolycodeShaderModule*> shaderModules;
  56. };
  57. };