PolyCGShader.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /*
  2. * PolyCGShader.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 "PolyCGProgram.h"
  15. #include "PolyTexture.h"
  16. #include "PolyCubemap.h"
  17. #include <vector>
  18. #include <CG/cg.h>
  19. using std::vector;
  20. namespace Polycode {
  21. typedef struct {
  22. Texture *texture;
  23. String name;
  24. CGparameter vpParam;
  25. } CGTextureBinding;
  26. typedef struct {
  27. Cubemap *cubemap;
  28. String name;
  29. CGparameter vpParam;
  30. } CGCubemapBinding;
  31. class _PolyExport CGShader : public Shader {
  32. public:
  33. CGShader(CGProgram *vp, CGProgram *fp);
  34. virtual ~CGShader();
  35. ShaderBinding *createBinding();
  36. CGProgram *vp;
  37. CGProgram *fp;
  38. protected:
  39. };
  40. class _PolyExport CGShaderBinding : public ShaderBinding {
  41. public:
  42. CGShaderBinding(CGShader *shader);
  43. virtual ~CGShaderBinding();
  44. void addTexture(String name, Texture *texture);
  45. void addCubemap(String name, Cubemap *cubemap);
  46. void clearTexture(String name);
  47. void addParam(String type, String name, String value);
  48. vector<CGTextureBinding> textures;
  49. vector<CGCubemapBinding> cubemaps;
  50. CGShader *cgShader;
  51. };
  52. }