/* * PolyCGShader.h * Poly * * Created by Ivan Safrin on 9/20/08. * Copyright 2008 __MyCompanyName__. All rights reserved. * */ // @package Materials #pragma once #include "PolyGlobals.h" #include "PolyLogger.h" #include "PolyShader.h" #include "PolyCGProgram.h" #include "PolyTexture.h" #include "PolyCubemap.h" #include #include using std::vector; namespace Polycode { typedef struct { Texture *texture; String name; CGparameter vpParam; } CGTextureBinding; typedef struct { Cubemap *cubemap; String name; CGparameter vpParam; } CGCubemapBinding; class _PolyExport CGShader : public Shader { public: CGShader(CGProgram *vp, CGProgram *fp); virtual ~CGShader(); ShaderBinding *createBinding(); CGProgram *vp; CGProgram *fp; protected: }; class _PolyExport CGShaderBinding : public ShaderBinding { public: CGShaderBinding(CGShader *shader); virtual ~CGShaderBinding(); void addTexture(String name, Texture *texture); void addCubemap(String name, Cubemap *cubemap); void clearTexture(String name); void addParam(String type, String name, String value); vector textures; vector cubemaps; CGShader *cgShader; }; }