void Application::RenderSceneWithLight()
{
//.. combine the light buffer
glClearColor(0,0,0,0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glDisable(GL_DEPTH_TEST);
// bind Textures
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D,m_kLightBuffer.m_uiTextures[0]);
glUniform1i(glGetUniformLocation(m_uiCombineProgram, "tex"), 0);
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D,m_kGbuffer.m_uiTextures[2]);
glUniform1i(glGetUniformLocation(m_uiCombineProgram, "diffuse"), 1);
glm::vec4 ambient = glm::vec4(0.2,0.03,0.0,0.0);
glUniform4f(glGetUniformLocation(m_uiCombineProgram, "ambient"),ambient.x, ambient.y, ambient.z, ambient.w);
glUniform2f(glGetUniformLocation(m_uiDeferredProgram, "kScreenDimension"),(float)m_kGbuffer.m_iWidth,(float)m_kGbuffer.m_iHeight);
glUseProgram(m_uiCombineProgram);
glBindVertexArray(m_uiFullScreenQuadVAO);
glDrawArrays(GL_TRIANGLES, 0,6);
glBindVertexArray(0);
glActiveTexture(GL_TEXTURE0);
glUseProgram(0);
glDisable(GL_BLEND);
glEnable(GL_DEPTH_TEST);
}
dm9pZCBBcHBsaWNhdGlvbjo6UmVuZGVyU2NlbmVXaXRoTGlnaHQoKQp7CiAgICAvLy4uIGNvbWJpbmUgdGhlIGxpZ2h0IGJ1ZmZlciAKCWdsQ2xlYXJDb2xvcigwLDAsMCwwKTsKCWdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQgKTsKCWdsRGlzYWJsZShHTF9ERVBUSF9URVNUKTsKCgkvLyBiaW5kIFRleHR1cmVzCiAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOwoJZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELG1fa0xpZ2h0QnVmZmVyLm1fdWlUZXh0dXJlc1swXSk7CiAgICBnbFVuaWZvcm0xaShnbEdldFVuaWZvcm1Mb2NhdGlvbihtX3VpQ29tYmluZVByb2dyYW0sICJ0ZXgiKSwgMCk7CiAgICAKICAgIAogICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUxKTsKCWdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCxtX2tHYnVmZmVyLm1fdWlUZXh0dXJlc1syXSk7CiAgICBnbFVuaWZvcm0xaShnbEdldFVuaWZvcm1Mb2NhdGlvbihtX3VpQ29tYmluZVByb2dyYW0sICJkaWZmdXNlIiksIDEpOwoKICAgIAogICAgCiAgICBnbG06OnZlYzQgYW1iaWVudCA9IGdsbTo6dmVjNCgwLjIsMC4wMywwLjAsMC4wKTsKICAgIGdsVW5pZm9ybTRmKGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1fdWlDb21iaW5lUHJvZ3JhbSwgImFtYmllbnQiKSxhbWJpZW50LngsIGFtYmllbnQueSwgYW1iaWVudC56LCBhbWJpZW50LncpOwogICAgCiAgICBnbFVuaWZvcm0yZihnbEdldFVuaWZvcm1Mb2NhdGlvbihtX3VpRGVmZXJyZWRQcm9ncmFtLCAia1NjcmVlbkRpbWVuc2lvbiIpLChmbG9hdCltX2tHYnVmZmVyLm1faVdpZHRoLChmbG9hdCltX2tHYnVmZmVyLm1faUhlaWdodCk7CgoKCiAgICBnbFVzZVByb2dyYW0obV91aUNvbWJpbmVQcm9ncmFtKTsKICAgIGdsQmluZFZlcnRleEFycmF5KG1fdWlGdWxsU2NyZWVuUXVhZFZBTyk7CglnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVTLCAwLDYpOwoKCWdsQmluZFZlcnRleEFycmF5KDApOwogICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKCWdsVXNlUHJvZ3JhbSgwKTsKCWdsRGlzYWJsZShHTF9CTEVORCk7CglnbEVuYWJsZShHTF9ERVBUSF9URVNUKTsKCQp9Cg==