18 #ifndef PIC_UTIL_GL_TECHNIQUE_HPP 19 #define PIC_UTIL_GL_TECHNIQUE_HPP 23 #include "../../util/std_util.hpp" 24 #include "../../util/gl/program.hpp" 59 stdVectorClear<ProgramGL>(
shaders);
67 bool init( std::string version_number,
68 std::string vertex_shader_source,
69 std::string fragment_shader_source)
71 ProgramGL *vss =
new ProgramGL(version_number,
"", vertex_shader_source, GL_VERTEX_SHADER);
72 ProgramGL *fss =
new ProgramGL(version_number,
"", fragment_shader_source, GL_FRAGMENT_SHADER);
79 bool init( std::string version_number,
80 std::string vertex_shader_source,
81 std::string fragment_shader_source,
82 std::string geomety_shader_source)
84 ProgramGL *vss =
new ProgramGL(version_number,
"", vertex_shader_source, GL_VERTEX_SHADER);
85 ProgramGL *gss =
new ProgramGL(version_number,
"", geomety_shader_source, GL_GEOMETRY_SHADER);
86 ProgramGL *fss =
new ProgramGL(version_number,
"", fragment_shader_source, GL_FRAGMENT_SHADER);
96 std::string compute_shader_source)
99 ProgramGL *css =
new ProgramGL(version_number,
"", compute_shader_source, GL_COMPUTE_SHADER);
115 std::string vertex_shader_source,
116 std::string fragment_shader_source,
119 bool bCheck = this->
init(version_number,
120 vertex_shader_source,
121 fragment_shader_source);
148 std::string vertex_shader_source,
149 std::string fragment_shader_source,
150 std::string geometry_shader_source,
153 bool bCheck = this->
init(version_number,
154 vertex_shader_source,
155 fragment_shader_source,
156 geometry_shader_source);
178 printf(
"\nLog for: %s\n", name.c_str());
179 for(
auto i = 0; i <
shaders.size(); i++) {
217 glBindFragDataLocation(
main.
getObject(), GLuint(index), fragment_output_color_name);
227 glBindAttribLocation(
main.
getObject(), GLuint(index), attribute_name);
259 void setUniform2f(
const char *name_uniform,
float value0,
float value1)
273 void setUniform3f(
const char *name_uniform,
float value0,
float value1,
float value2)
289 void setUniform4f(
const char *name_uniform,
float value0,
float value1,
float value2,
float value3)
304 void setUniform3x3(
const char *name_uniform,
const float *matrix,
bool bTranspose)
308 bTranspose ? GL_TRUE : GL_FALSE,
309 (
const GLfloat*)(matrix));
318 void setUniform4x4(
const char *name_uniform,
const float *matrix,
bool bTranspose)
322 bTranspose ? GL_TRUE : GL_FALSE,
323 (
const GLfloat*)(matrix));
335 (
const GLfloat *)value);
347 (
const GLfloat *)value);
351 void setSSBOIndex(
const char *ssbo_name,
unsigned int index)
353 GLunit block_index = 0;
354 block_index = glGetProgramResourceIndex(
main, GL_SHADER_STORAGE_BLOCK, ssbo_name);
355 glShaderStorageBlockBinding(program, block_index, index);
void setOutputFragmentShaderIndex(const char *fragment_output_color_name, unsigned int index)
setOutputFragmentShaderIndex
Definition: technique.hpp:215
bool initCompute(std::string version_number, std::string compute_shader_source)
Definition: technique.hpp:95
TechniqueGL()
TechniqueGL.
Definition: technique.hpp:52
~TechniqueGL()
Definition: technique.hpp:57
void setUniform1f(const char *name_uniform, float value0)
SetUniform1f.
Definition: technique.hpp:247
void unbind()
unbind
Definition: technique.hpp:197
void link()
link
Definition: technique.hpp:205
void setUniform2f(const char *name_uniform, float value0, float value1)
setUniform
Definition: technique.hpp:259
GLuint getObject()
getObject
Definition: program.hpp:163
bool initStandard(std::string version_number, std::string vertex_shader_source, std::string fragment_shader_source, std::string name)
initStandard
Definition: technique.hpp:114
Definition: program.hpp:27
bool init(std::string version_number, std::string vertex_shader_source, std::string fragment_shader_source)
Definition: technique.hpp:67
GLuint getLocation(const char *name)
getLocation
Definition: technique.hpp:42
The TechniqueGL class.
Definition: technique.hpp:31
void setUniform3fv(const char *name_uniform, const float *value)
setUniform3
Definition: technique.hpp:331
bool initStandard(std::string version_number, std::string vertex_shader_source, std::string fragment_shader_source, std::string geometry_shader_source, std::string name)
initStandard
Definition: technique.hpp:147
void setUniform4fv(const char *name_uniform, const float *value)
setUniform4
Definition: technique.hpp:343
void setUniform3f(const char *name_uniform, float value0, float value1, float value2)
setUniform
Definition: technique.hpp:273
void printLog(std::string name)
printLog
Definition: technique.hpp:176
void setUniform3x3(const char *name_uniform, const float *matrix, bool bTranspose)
setUniform3x3
Definition: technique.hpp:304
ProgramGL main
Definition: technique.hpp:35
void printLog()
printLog
Definition: program.hpp:239
void setAttributeIndex(const char *attribute_name, unsigned int index)
setAttributeIndex
Definition: technique.hpp:225
void setUniform4f(const char *name_uniform, float value0, float value1, float value2, float value3)
setUniform4f
Definition: technique.hpp:289
void setUniform4x4(const char *name_uniform, const float *matrix, bool bTranspose)
setUniform4x4
Definition: technique.hpp:318
Definition: bilateral_separation.hpp:25
bool init(std::string version_number, std::string vertex_shader_source, std::string fragment_shader_source, std::string geomety_shader_source)
Definition: technique.hpp:79
bool isValid()
Definition: technique.hpp:62
std::vector< ProgramGL * > shaders
Definition: technique.hpp:34
void setUniform1i(const char *name_uniform, int value0)
SetUniform.
Definition: technique.hpp:236
void bind()
bind
Definition: technique.hpp:189
bool bCompiled
Definition: program.hpp:109
bool initProgram(std::vector< ProgramGL *> &shaders)
initProgram
Definition: program.hpp:173