tweaking program pipeline construction

This commit is contained in:
2020-03-09 01:06:42 -04:00
parent bb7dcfd47d
commit edfe8947a6
3 changed files with 36 additions and 29 deletions

View File

@@ -206,30 +206,6 @@ namespace cgl {
return id; return id;
} }
void use_stages(const shaderprogram<GL_VERTEX_SHADER> &pgm) {
glUseProgramStages(id, GL_VERTEX_SHADER_BIT, pgm);
}
void use_stages(const shaderprogram<GL_TESS_CONTROL_SHADER> &pgm) {
glUseProgramStages(id, GL_TESS_CONTROL_SHADER_BIT, pgm);
}
void use_stages(const shaderprogram<GL_TESS_EVALUATION_SHADER> &pgm) {
glUseProgramStages(id, GL_TESS_EVALUATION_SHADER_BIT, pgm);
}
void use_stages(const shaderprogram<GL_GEOMETRY_SHADER> &pgm) {
glUseProgramStages(id, GL_GEOMETRY_SHADER_BIT, pgm);
}
void use_stages(const shaderprogram<GL_FRAGMENT_SHADER> &pgm) {
glUseProgramStages(id, GL_FRAGMENT_SHADER_BIT, pgm);
}
void use_stages(const shaderprogram<GL_COMPUTE_SHADER> &pgm) {
glUseProgramStages(id, GL_COMPUTE_SHADER_BIT, pgm);
}
[[nodiscard]] int get(GLenum pname) const { [[nodiscard]] int get(GLenum pname) const {
GLint res; GLint res;
glGetProgramPipelineiv(id, pname, &res); glGetProgramPipelineiv(id, pname, &res);
@@ -242,6 +218,36 @@ namespace cgl {
glGetProgramPipelineInfoLog(id, len, nullptr, buffer); glGetProgramPipelineInfoLog(id, len, nullptr, buffer);
return std::string(buffer); return std::string(buffer);
} }
pipeline &stage(const shaderprogram<GL_VERTEX_SHADER> &pgm) {
glUseProgramStages(id, GL_VERTEX_SHADER_BIT, pgm);
return *this;
}
pipeline &stage(const shaderprogram<GL_TESS_CONTROL_SHADER> &pgm) {
glUseProgramStages(id, GL_TESS_CONTROL_SHADER_BIT, pgm);
return *this;
}
pipeline &stage(const shaderprogram<GL_TESS_EVALUATION_SHADER> &pgm) {
glUseProgramStages(id, GL_TESS_EVALUATION_SHADER_BIT, pgm);
return *this;
}
pipeline &stage(const shaderprogram<GL_GEOMETRY_SHADER> &pgm) {
glUseProgramStages(id, GL_GEOMETRY_SHADER_BIT, pgm);
return *this;
}
pipeline &stage(const shaderprogram<GL_FRAGMENT_SHADER> &pgm) {
glUseProgramStages(id, GL_FRAGMENT_SHADER_BIT, pgm);
return *this;
}
pipeline &stage(const shaderprogram<GL_COMPUTE_SHADER> &pgm) {
glUseProgramStages(id, GL_COMPUTE_SHADER_BIT, pgm);
return *this;
}
}; };
namespace pgm { namespace pgm {

View File

@@ -8,7 +8,7 @@
#include "combo_iterator.hpp" #include "combo_iterator.hpp"
/** /**
* An primitive with N indices. * An primitive stage N indices.
* @tparam N * @tparam N
*/ */
template<unsigned N> template<unsigned N>

View File

@@ -91,10 +91,11 @@ void run(GLFWwindow *window) {
auto solid = cgl::pgm::frag::file("shaders/solid.fs.glsl"); auto solid = cgl::pgm::frag::file("shaders/solid.fs.glsl");
cgl::pipeline proj_pipe; auto proj_pipe = cgl::pipeline();
proj_pipe.use_stages(direct_stereo); proj_pipe
proj_pipe.use_stages(curve_stereo); .stage(direct_stereo)
proj_pipe.use_stages(solid); .stage(curve_stereo)
.stage(solid);
//region points //region points
auto group = tc::group::H(4); auto group = tc::group::H(4);