diff options
Diffstat (limited to 'libs/renderengine/gl/Program.cpp')
-rw-r--r-- | libs/renderengine/gl/Program.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/libs/renderengine/gl/Program.cpp b/libs/renderengine/gl/Program.cpp index f4fbf3524a..26f6166761 100644 --- a/libs/renderengine/gl/Program.cpp +++ b/libs/renderengine/gl/Program.cpp @@ -66,6 +66,7 @@ Program::Program(const ProgramCache::Key& /*needs*/, const char* vertex, const c mTextureMatrixLoc = glGetUniformLocation(programId, "texture"); mSamplerLoc = glGetUniformLocation(programId, "sampler"); mColorLoc = glGetUniformLocation(programId, "color"); + mDisplayColorMatrixLoc = glGetUniformLocation(programId, "displayColorMatrix"); mDisplayMaxLuminanceLoc = glGetUniformLocation(programId, "displayMaxLuminance"); mMaxMasteringLuminanceLoc = glGetUniformLocation(programId, "maxMasteringLuminance"); mMaxContentLuminanceLoc = glGetUniformLocation(programId, "maxContentLuminance"); @@ -81,6 +82,14 @@ Program::Program(const ProgramCache::Key& /*needs*/, const char* vertex, const c } } +Program::~Program() { + glDetachShader(mProgram, mVertexShader); + glDetachShader(mProgram, mFragmentShader); + glDeleteShader(mVertexShader); + glDeleteShader(mFragmentShader); + glDeleteProgram(mProgram); +} + bool Program::isValid() const { return mInitialized; } @@ -129,6 +138,9 @@ void Program::setUniforms(const Description& desc) { const float color[4] = {desc.color.r, desc.color.g, desc.color.b, desc.color.a}; glUniform4fv(mColorLoc, 1, color); } + if (mDisplayColorMatrixLoc >= 0) { + glUniformMatrix4fv(mDisplayColorMatrixLoc, 1, GL_FALSE, desc.displayColorMatrix.asArray()); + } if (mInputTransformMatrixLoc >= 0) { mat4 inputTransformMatrix = desc.inputTransformMatrix; glUniformMatrix4fv(mInputTransformMatrixLoc, 1, GL_FALSE, inputTransformMatrix.asArray()); |