PICCANTE  0.4
The hottest HDR imaging library!
color_conv.hpp
Go to the documentation of this file.
1 /*
2 
3 PICCANTE
4 The hottest HDR imaging library!
5 http://vcg.isti.cnr.it/piccante
6 
7 Copyright (C) 2014
8 Visual Computing Laboratory - ISTI CNR
9 http://vcg.isti.cnr.it
10 First author: Francesco Banterle
11 
12 This Source Code Form is subject to the terms of the Mozilla Public
13 License, v. 2.0. If a copy of the MPL was not distributed with this
14 file, You can obtain one at http://mozilla.org/MPL/2.0/.
15 
16 */
17 
18 #ifndef PIC_GL_COLORS_COLOR_CONV_HPP
19 #define PIC_GL_COLORS_COLOR_CONV_HPP
20 
21 #include <string>
22 
23 #include "../../util/gl/technique.hpp"
24 
25 namespace pic {
26 
31 {
32 protected:
33  int direct;
35 
36 public:
37 
41  ColorConvGL(bool direct = true)
42  {
44  }
45 
50  virtual std::string getDirectFunction() = 0;
51 
56  virtual std::string getDirectFunctionAux() = 0;
57 
62  virtual std::string getDirectUniforms() = 0;
63 
68  virtual std::string getInverseFunction() = 0;
69 
74  virtual std::string getInverseUniforms() = 0;
75 
80  virtual std::string getInverseFunctionAux() = 0;
81 
86  void generatePrograms(std::string vertex_source)
87  {
88  //direct transform
89  techniques[0].initStandard("330", vertex_source, getDirectFunction(), "ColorConv (direct)");
90 
91  techniques[0].bind();
92  techniques[0].setUniform1i("u_tex", 0);
93  techniques[0].unbind();
94 
95  //inverse transform
96  techniques[1].initStandard("330", vertex_source, getInverseFunction(), "ColorConv (inverse)");
97 
98  techniques[1].bind();
99  techniques[1].setUniform1i("u_tex", 0);
100  techniques[1].unbind();
101  }
102 
107  void setTransform(bool direct)
108  {
109  this->direct = direct ? 0 : 1;
110  }
111 
115  void bindProgram()
116  {
118  }
119 
124  {
126  }
127 
131  virtual void setUniforms()
132  {
133  }
134 };
135 
136 } // end namespace pic
137 
138 #endif /* PIC_GL_COLORS_COLOR_CONV_HPP */
139 
virtual void setUniforms()
setUniforms
Definition: color_conv.hpp:131
virtual std::string getInverseUniforms()=0
getInverseUniforms
void generatePrograms(std::string vertex_source)
generatePrograms
Definition: color_conv.hpp:86
void setTransform(bool direct)
setTransform
Definition: color_conv.hpp:107
void unbind()
unbind
Definition: technique.hpp:197
bool initStandard(std::string version_number, std::string vertex_shader_source, std::string fragment_shader_source, std::string name)
initStandard
Definition: technique.hpp:114
int direct
Definition: color_conv.hpp:33
virtual std::string getInverseFunction()=0
getInverseFunction
TechniqueGL techniques[2]
Definition: color_conv.hpp:34
The TechniqueGL class.
Definition: technique.hpp:31
virtual std::string getDirectFunction()=0
getDirectFunction
void bindProgram()
bindProgram
Definition: color_conv.hpp:115
virtual std::string getInverseFunctionAux()=0
getInverseFunctionAux
The ColorConvGL class.
Definition: color_conv.hpp:30
ColorConvGL(bool direct=true)
ColorConv.
Definition: color_conv.hpp:41
virtual std::string getDirectFunctionAux()=0
getDirectFunctionAux
Definition: bilateral_separation.hpp:25
void unbindProgram()
unbindProgram
Definition: color_conv.hpp:123
virtual std::string getDirectUniforms()=0
getDirectUniforms
void setUniform1i(const char *name_uniform, int value0)
SetUniform.
Definition: technique.hpp:236
void bind()
bind
Definition: technique.hpp:189