11#ifndef CSCI441_SHADER_PROGRAM_PIPELINE_HPP
12#define CSCI441_SHADER_PROGRAM_PIPELINE_HPP
32 [[maybe_unused]]
static void enableDebugMessages();
37 [[maybe_unused]]
static void disableDebugMessages();
75 [[maybe_unused]]
void useProgramStages( GLbitfield programStages, const
ShaderProgram *shaderProgram ) const;
82 [[maybe_unused]]
void useProgramStages( const
ShaderProgram *shaderProgram ) const;
88 [[maybe_unused]]
void bindPipeline() const;
93 [[maybe_unused]]
void printPipelineInfo() const;
99 [[maybe_unused]] [[nodiscard]]
bool validatePipeline() const;
104 GLuint _pipelineHandle;
123 glGenProgramPipelines(1,& _pipelineHandle);
127 glDeleteProgramPipelines(1, &_pipelineHandle);
131 _pipelineHandle = src._pipelineHandle;
132 src._pipelineHandle = 0;
139 glDeleteProgramPipelines(1, &_pipelineHandle);
141 _pipelineHandle = src._pipelineHandle;
142 src._pipelineHandle = 0;
162 glBindProgramPipeline( _pipelineHandle );
168 printf(
"\n[INFO]: /--------------------------------------------------------\\\n");
169 printf(
"[INFO]: | Program Pipeline: |\n");
170 printf(
"[INFO]: | Pipeline Handle: %4u %32c\n", _pipelineHandle,
'|' );
172 CSCI441_INTERNAL::ShaderUtils::printProgramPipelineLog(_pipelineHandle);
174 printf(
"[INFO]: >--------------------------------------------------------<\n");
176 GLint vs, tcs, tes, gs, fs;
177 glGetProgramPipelineiv( _pipelineHandle, GL_VERTEX_SHADER, &vs );
178 glGetProgramPipelineiv( _pipelineHandle, GL_TESS_CONTROL_SHADER, &tcs );
179 glGetProgramPipelineiv( _pipelineHandle, GL_TESS_EVALUATION_SHADER, &tes );
180 glGetProgramPipelineiv( _pipelineHandle, GL_GEOMETRY_SHADER, &gs );
181 glGetProgramPipelineiv( _pipelineHandle, GL_FRAGMENT_SHADER, &fs );
183 if( vs != 0 ) printf(
"[INFO]: | Vertex Shader Program Handle: %2d |\n", vs );
184 if( tcs != 0 ) printf(
"[INFO]: | Tess Ctrl Shader Program Handle: %2d |\n", tcs );
185 if( tes != 0 ) printf(
"[INFO]: | Tess Eval Shader Program Handle: %2d |\n", tes );
186 if( gs != 0 ) printf(
"[INFO]: | Geometry Shader Program Handle: %2d |\n", gs );
187 if( fs != 0 ) printf(
"[INFO]: | Fragment Shader Program Handle: %2d |\n", fs );
189 printf(
"[INFO]: \\--------------------------------------------------------/\n");
196 glValidateProgramPipeline(_pipelineHandle);
197 GLint validateStatus;
198 glGetProgramPipelineiv(_pipelineHandle, GL_VALIDATE_STATUS, &validateStatus);
199 return (validateStatus == GL_TRUE);
Class to work with OpenGL 4.0+ Shaders.
Handles registration and compilation of Shaders.
Definition: ShaderProgram.hpp:35
virtual GLbitfield getProgramStages() const final
returns a single value corresponding to which shader stages are present in this shader program
Definition: ShaderProgram.hpp:2077
virtual GLuint getShaderProgramHandle() const final
Returns the handle for this shader program.
Definition: ShaderProgram.hpp:1495
Handles registration and compilation of Shader Program Pipelines.
Definition: ShaderProgramPipeline.hpp:26
ShaderProgramPipeline(const ShaderProgramPipeline &)=delete
do not allow shader program pipelines to be copied
void useProgramStages(GLbitfield programStages, const ShaderProgram *shaderProgram) const
adds shader program stages to pipeline
Definition: ShaderProgramPipeline.hpp:150
ShaderProgramPipeline()
creates a shader program pipeline by generating a shader program pipeline handle
Definition: ShaderProgramPipeline.hpp:122
bool validatePipeline() const
Definition: ShaderProgramPipeline.hpp:195
void bindPipeline() const
bind shader program pipeline
Definition: ShaderProgramPipeline.hpp:160
ShaderProgramPipeline & operator=(const ShaderProgramPipeline &)=delete
do not allow shader program pipelines to be copied
~ShaderProgramPipeline()
deletes a shader program pipeline by deleting the shader program pipeline handle
Definition: ShaderProgramPipeline.hpp:126
static void disableDebugMessages()
Disables debug messages from Shader Program functions.
Definition: ShaderProgramPipeline.hpp:118
void printPipelineInfo() const
prints shader program pipeline information to console
Definition: ShaderProgramPipeline.hpp:166
CSCI441 Helper Functions for OpenGL.
Definition: ArcballCam.hpp:17