From 6b55b4ff821a83473f666ec0a2716b624e64b7cf Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Fri, 16 Jan 2015 10:26:51 -0800 Subject: [PATCH] No more Magic numbers and fixing the code path for linux --- libraries/gpu/src/gpu/GLBackend.cpp | 5 ++++- libraries/render-utils/src/DeferredLightingEffect.cpp | 4 +++- libraries/render-utils/src/Model.cpp | 9 ++++++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/libraries/gpu/src/gpu/GLBackend.cpp b/libraries/gpu/src/gpu/GLBackend.cpp index ed1b97a58f..a01b39c35f 100644 --- a/libraries/gpu/src/gpu/GLBackend.cpp +++ b/libraries/gpu/src/gpu/GLBackend.cpp @@ -498,9 +498,12 @@ void GLBackend::do_setUniformBuffer(Batch& batch, uint32 paramOffset) { // NOT working so we ll stick to the uniform float array until we move to core profile // GLuint bo = getBufferID(*uniformBuffer); //glUniformBufferEXT(_shader._program, slot, bo); -#else +#elif defined(Q_OS_WIN) GLuint bo = getBufferID(*uniformBuffer); glBindBufferRange(GL_UNIFORM_BUFFER, slot, bo, rangeStart, rangeSize); +#else + GLfloat* data = (GLfloat*) (uniformBuffer->getData() + rangeStart); + glUniform4fv(slot, rangeSize / sizeof(GLfloat[4]), data); #endif CHECK_GL_ERROR(); } diff --git a/libraries/render-utils/src/DeferredLightingEffect.cpp b/libraries/render-utils/src/DeferredLightingEffect.cpp index 0bb3cd9220..5cbdd04f64 100644 --- a/libraries/render-utils/src/DeferredLightingEffect.cpp +++ b/libraries/render-utils/src/DeferredLightingEffect.cpp @@ -54,6 +54,8 @@ public: glm::vec3 L21 ; float spare7; glm::vec3 L22 ; float spare8; + static const int NUM_COEFFICIENTS = 9; + void assignPreset(int p) { switch (p) { case DeferredLightingEffect::OLD_TOWN_SQUARE: { @@ -387,7 +389,7 @@ void DeferredLightingEffect::render() { sh.assignPreset(0); } - for (int i =0; i <9; i++) { + for (int i =0; i setUniformValue(locations->ambientSphere + i, *(((QVector4D*) &sh) + i)); } } diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index 1bca37aa10..97e6124517 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -206,7 +206,7 @@ void Model::initProgram(ProgramObject& program, Model::Locations& locations, boo } else { locations.materialBufferUnit = -1; } -#else +#elif defined(Q_OS_WIN) loc = glGetUniformBlockIndex(program.programId(), "materialBuffer"); if (loc >= 0) { glUniformBlockBinding(program.programId(), loc, 1); @@ -214,6 +214,13 @@ void Model::initProgram(ProgramObject& program, Model::Locations& locations, boo } else { locations.materialBufferUnit = -1; } +#else + loc = program.uniformLocation("materialBuffer"); + if (loc >= 0) { + locations.materialBufferUnit = loc; + } else { + locations.materialBufferUnit = -1; + } #endif if (!program.isLinked()) {