PolyGLSLShader.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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 "PolyGlobals.h"
  12. #include "PolyLogger.h"
  13. #include "PolyShader.h"
  14. #include "PolyGLSLProgram.h"
  15. #include "PolyTexture.h"
  16. #include "PolyCubemap.h"
  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. namespace Polycode {
  29. typedef struct {
  30. Texture *texture;
  31. String name;
  32. } GLSLTextureBinding;
  33. typedef struct {
  34. Cubemap *cubemap;
  35. String name;
  36. } GLSLCubemapBinding;
  37. class _PolyExport GLSLShader : public Shader {
  38. public:
  39. GLSLShader(GLSLProgram *vp, GLSLProgram *fp);
  40. virtual ~GLSLShader();
  41. ShaderBinding *createBinding();
  42. unsigned int shader_id;
  43. GLSLProgram *vp;
  44. GLSLProgram *fp;
  45. protected:
  46. };
  47. class _PolyExport GLSLShaderBinding : public ShaderBinding {
  48. public:
  49. GLSLShaderBinding(GLSLShader *shader);
  50. virtual ~GLSLShaderBinding();
  51. void addTexture(String name, Texture *texture);
  52. void addCubemap(String name, Cubemap *cubemap);
  53. void clearTexture(String name);
  54. void addParam(String type, String name, String value);
  55. vector<GLSLTextureBinding> textures;
  56. vector<GLSLCubemapBinding> cubemaps;
  57. GLSLShader *glslShader;
  58. };
  59. }