PolyGLSLShaderModule.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. /*
  2. * PolyGLSLShader.h
  3. * Poly
  4. *
  5. * Created by Ivan Safrin on 9/20/08.
  6. * Copyright 2008 __MyCompanyName__. All rights reserved.
  7. *
  8. */
  9. // @package Materials
  10. #pragma once
  11. #include "Polycode.h"
  12. #include "PolyGLSLProgram.h"
  13. #include "PolyGLSLShader.h"
  14. #include "PolyMaterial.h"
  15. #include "PolyGLTexture.h"
  16. #include <string>
  17. #include <vector>
  18. #if defined(__APPLE__) && defined(__MACH__)
  19. #include <OpenGL/gl.h>
  20. #include <OpenGL/glext.h>
  21. #include <OpenGL/glu.h>
  22. #else
  23. #include <GL/gl.h>
  24. #include <GL/glu.h>
  25. #include <GL/glext.h>
  26. #endif
  27. using std::vector;
  28. using std::string;
  29. namespace Polycode {
  30. class _PolyExport GLSLShaderModule : public PolycodeShaderModule {
  31. public:
  32. GLSLShaderModule();
  33. virtual ~GLSLShaderModule();
  34. bool acceptsExtension(String extension);
  35. Resource* createProgramFromFile(String extension, String fullPath);
  36. void reloadPrograms();
  37. String getShaderType();
  38. Shader *createShader(TiXmlNode *node);
  39. bool applyShaderMaterial(Renderer *renderer, Material *material, ShaderBinding *localOptions, unsigned int shaderIndex);
  40. void clearShader();
  41. protected:
  42. void addParamToProgram(GLSLProgram *program,TiXmlNode *node);
  43. void recreateGLSLProgram(GLSLProgram *prog, String fileName, int type);
  44. GLSLProgram *createGLSLProgram(String fileName, int type);
  45. void updateGLSLParam(Renderer *renderer, GLSLProgramParam &param, ShaderBinding *materialOptions, ShaderBinding *localOptions);
  46. void setGLSLAreaLightPositionParameter(Renderer *renderer, GLSLProgramParam &param, int lightIndex);
  47. void setGLSLAreaLightColorParameter(Renderer *renderer, GLSLProgramParam &param, int lightIndex);
  48. void setGLSLSpotLightPositionParameter(Renderer *renderer, GLSLProgramParam &param, int lightIndex);
  49. void setGLSLSpotLightDirectionParameter(Renderer *renderer, GLSLProgramParam &param, int lightIndex);
  50. void setGLSLSpotLightColorParameter(Renderer *renderer, GLSLProgramParam &param, int lightIndex);
  51. void setGLSLSpotLightTextureMatrixParameter(Renderer *renderer, GLSLProgramParam &param, int lightIndex);
  52. // GLSLcontext GLSLContext;
  53. // GLSLprofile vertexProfile;
  54. // GLSLprofile fragmentProfile;
  55. vector<GLSLProgram*> programs;
  56. };
  57. }