00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00024
00025 #ifndef SFML_POSTFX_HPP
00026 #define SFML_POSTFX_HPP
00027
00029
00031 #include <SFML/Graphics/Drawable.hpp>
00032 #include <SFML/Graphics/Image.hpp>
00033 #include <SFML/Graphics/VideoResource.hpp>
00034 #include <map>
00035 #include <string>
00036
00037
00041 class SFML_API sfPostFX : public sfDrawable, public sfVideoResource
00042 {
00043 public :
00044
00049 sfPostFX();
00050
00057 sfPostFX(const std::string& Filename);
00058
00063 ~sfPostFX();
00064
00071 void LoadFromFile(const std::string& Filename);
00072
00080 void SetParameter(const std::string& Name, float X);
00081
00089 void SetParameter(const std::string& Name, float X, float Y);
00090
00098 void SetParameter(const std::string& Name, float X, float Y, float Z);
00099
00107 void SetParameter(const std::string& Name, float X, float Y, float Z, float W);
00108
00116 void SetTexture(const std::string& Name, sfImage* Image);
00117
00118 protected :
00119
00124 virtual void Render(sfRenderWindow& Window);
00125
00126 private :
00127
00137 static std::string PreprocessEffect(const std::string& Filename);
00138
00148 bool CreateAndAttachShader(const std::string& Source, unsigned int ShaderType);
00149
00154 virtual void InitVideoResources();
00155
00160 virtual void DestroyVideoResources();
00161
00163
00165 unsigned int myShaderProgram;
00166 std::map<std::string, sfImage*> mySamplers;
00167 std::string myFragmentShader;
00168 sfImage myFrameBuffer;
00169 };
00170
00171
00172 #endif // SFML_POSTFX_HPP