PolyMaterialManager.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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 "PolyGlobals.h"
  12. #include "PolyCoreServices.h"
  13. #include "PolyTexture.h"
  14. #include "PolyCubemap.h"
  15. #include "PolyMaterial.h"
  16. #include "PolyShader.h"
  17. #include "PolyFixedShader.h"
  18. #include "PolyModule.h"
  19. #include "PolyImage.h"
  20. #include "tinyxml.h"
  21. #include "PolyUtil.h"
  22. #include <vector>
  23. using namespace std;
  24. namespace Polycode {
  25. class Texture;
  26. class SceneRenderTexture;
  27. class _PolyExport MaterialManager {
  28. public:
  29. MaterialManager();
  30. ~MaterialManager();
  31. void Update(int elapsed);
  32. Texture *createFramebufferTexture(int width, int height, int type);
  33. Texture *createTexture(int width, int height, char *imageData, bool clamp=true, int type=Image::IMAGE_RGBA);
  34. Texture *createNewTexture(int width, int height, bool clamp=true, int type=Image::IMAGE_RGBA);
  35. Texture *createTextureFromImage(Image *image, bool clamp=true);
  36. Texture *createTextureFromFile(string fileName);
  37. void deleteTexture(Texture *texture);
  38. void reloadTextures();
  39. void reloadProgramsAndTextures();
  40. void reloadPrograms();
  41. void addShaderModule(PolycodeShaderModule *module);
  42. //SceneRenderTexture *createRenderTexture(Scene *targetScene, Camera *targetCamera, int renderWidth,int renderHeight);
  43. Texture *getTextureByResourcePath(string resourcePath);
  44. // cubemaps
  45. Cubemap *cubemapFromXMLNode(TiXmlNode *node);
  46. // materials
  47. void loadMaterialsFromFile(string fileName);
  48. Material *materialFromXMLNode(TiXmlNode *node);
  49. Shader *setShaderFromXMLNode(TiXmlNode *node);
  50. Shader *createShaderFromXMLNode(TiXmlNode *node);
  51. private:
  52. vector<Texture*> textures;
  53. vector<Material*> materials;
  54. vector <PolycodeShaderModule*> shaderModules;
  55. };
  56. };