Program.cpp
Go to the documentation of this file.
1 #include "quori_face/Program.hpp"
2 
3 #include "quori_face/gl.hpp"
4 #include <GL/gl3w.h>
5 
6 #include <stdexcept>
7 #include <iostream>
8 
9 #include "trace.hpp"
10 
11 
12 using namespace quori_face;
13 
15 {
17 }
18 
19 Program::Ptr Program::link(const std::initializer_list<Shader::Ptr> &shaders)
20 {
21  std::uint16_t handle = QUORI_FACE_TRACE(glCreateProgram());
22  checkGlError();
23 
24  for (const Shader::Ptr &shader : shaders)
25  {
26  QUORI_FACE_TRACE(glAttachShader(handle, shader->getHandle()));
27  checkGlError();
28  }
29 
31  checkGlError();
32 
33  GLint success = GL_TRUE;
35  checkGlError();
36  if (success == GL_FALSE)
37  {
38  GLint length = 0;
40  char *buffer = new char[length];
43  delete[] buffer;
44  throw std::runtime_error(message);
45  }
46 
47  return Ptr(new Program(handle));
48 }
49 
50 std::uint32_t Program::getUniformLocation(const std::string &name) const
51 {
53 }
54 
56 {
58 }
59 
60 std::uint32_t Program::getHandle() const
61 {
62  return handle_;
63 }
64 
65 Program::Program(const std::uint16_t handle)
66  : handle_(handle)
67 {
68 }
buffer
GLuint buffer
Definition: glcorearb.h:636
GL_LINK_STATUS
#define GL_LINK_STATUS
Definition: glcorearb.h:738
GL_FALSE
#define GL_FALSE
Definition: glcorearb.h:75
quori_face::Program::Program
Program(const std::uint16_t handle)
Definition: Program.cpp:65
string
GLsizei const GLchar *const * string
Definition: glcorearb.h:790
glGetProgramInfoLog
#define glGetProgramInfoLog
Definition: gl3w.h:959
glGetProgramiv
#define glGetProgramiv
Definition: gl3w.h:969
quori_face::Program::getHandle
std::uint32_t getHandle() const
Definition: Program.cpp:60
glAttachShader
#define glAttachShader
Definition: gl3w.h:727
trace.hpp
glGetUniformLocation
#define glGetUniformLocation
Definition: gl3w.h:1015
quori_face::Program::Ptr
std::shared_ptr< Program > Ptr
Definition: Program.hpp:18
quori_face
Definition: Cache.hpp:9
gl3w.h
glDeleteProgram
#define glDeleteProgram
Definition: gl3w.h:833
quori_face::Program::link
static Ptr link(const std::initializer_list< Shader::Ptr > &shaders)
Definition: Program.cpp:19
name
GLuint const GLchar * name
Definition: glcorearb.h:762
Program.hpp
GL_INFO_LOG_LENGTH
#define GL_INFO_LOG_LENGTH
Definition: glcorearb.h:740
quori_face::Program::use
void use()
Definition: Program.cpp:55
glUseProgram
#define glUseProgram
Definition: gl3w.h:1286
quori_face::Program::~Program
~Program()
Definition: Program.cpp:14
QUORI_FACE_TRACE
#define QUORI_FACE_TRACE(stmt)
Definition: quori_face/trace.hpp:16
glLinkProgram
#define glLinkProgram
Definition: gl3w.h:1061
shaders
GLsizei GLsizei GLuint * shaders
Definition: glcorearb.h:773
quori_face::checkGlError
void checkGlError()
Throws a std::runtime_error if the OpenGL error flag is set.
Definition: gl.cpp:47
gl.hpp
GL_TRUE
#define GL_TRUE
Definition: glcorearb.h:76
glCreateProgram
#define glCreateProgram
Definition: gl3w.h:817
shader
GLuint shader
Definition: glcorearb.h:761
message
GLuint GLsizei const GLchar * message
Definition: glcorearb.h:2498
quori_face::Program::getUniformLocation
std::uint32_t getUniformLocation(const std::string &name) const
Definition: Program.cpp:50
length
GLuint GLsizei GLsizei * length
Definition: glcorearb.h:771
GLint
int GLint
Definition: glcorearb.h:65
quori_face::Shader::Ptr
std::shared_ptr< Shader > Ptr
Definition: Shader.hpp:20
quori_face::Program::handle_
std::uint32_t handle_
Definition: Program.hpp:51


quori_face
Author(s):
autogenerated on Wed Mar 2 2022 00:53:20