Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void render(){
- glClearColor(0.0, 0.0, 0.0, 0.0);
- Shader* shader;
- ////////// Shadowmap
- glBindFramebuffer(GL_FRAMEBUFFER, shadowmap->getFBO());
- glBindTexture(GL_TEXTURE_2D, 0);
- glViewport(0, 0, shadowmap->getTextureWidth(), shadowmap->getTextureHeight());
- glClear(GL_DEPTH_BUFFER_BIT);
- glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
- //glCullFace(GL_FRONT);
- /*mat4 o;
- o.setIdentity();
- o.ortho(-10, 10, -10, 10, -10, 20);*/
- //
- shader = shader1;
- /*shader->bindShader();
- shader->enableVertexAttribArrays();
- shader->sendUniform4x4("pmv", (light->getProjection()*models[0]->getModelview(light->getModelview())).getArray());
- glBindBuffer(GL_ARRAY_BUFFER, models[0]->getModel()->getVertexBuffer());
- glVertexAttribPointer(shader->getAttribLocation("vertex0"), 3, GL_FLOAT, GL_FALSE, 0, 0);
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, models[0]->getModel()->getIndexBuffer());
- glDrawElements(GL_TRIANGLES, models[0]->getModel()->getIndexCount(), GL_UNSIGNED_INT, NULL);*/
- //
- shader->bindShader();
- shader->enableVertexAttribArrays();
- shader->sendUniform4x4("pmv", (light->getProjection()*models[1]->getModelview(light->getModelview())).getArray());
- glBindBuffer(GL_ARRAY_BUFFER, models[1]->getModel()->getVertexBuffer());
- glVertexAttribPointer(shader->getAttribLocation("vertex0"), 3, GL_FLOAT, GL_FALSE, 0, 0);
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, models[1]->getModel()->getIndexBuffer());
- glDrawElements(GL_TRIANGLES, models[1]->getModel()->getIndexCount(), GL_UNSIGNED_INT, NULL);
- //
- glBindFramebuffer(GL_FRAMEBUFFER, 0);
- glViewport(0, 0, wndSize[0], wndSize[1]);
- glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
- glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
- //glCullFace(GL_BACK);
- ////////// Objekt
- mat4 bias(0.5, 0, 0, 0,
- 0, 0.5, 0, 0,
- 0, 0, 0.5, 0,
- 0.5, 0.5, 0.5, 1);
- glActiveTexture(GL_TEXTURE1);
- glBindTexture(GL_TEXTURE_2D, shadowmap->getTextureID());
- shader = shader0;
- shader->bindShader();
- shader->enableVertexAttribArrays();
- shader->sendUniform("texture0", 0);
- shader->sendUniform4x4("p", camera->getProjection().getArray());
- shader->sendUniform4x4("shadowBPMV", (bias*light->getProjection()*light->getModelview()).getArray());
- shader->sendUniform("shadowMap", 1);
- shader->sendUniform("pixelOffset", shadowmap->getPixelOffset().x, shadowmap->getPixelOffset().y);
- //
- shader->sendUniform4x4("mv", models[0]->getModelview(camera->getModelview()).getArray());
- glActiveTexture(GL_TEXTURE0);
- glBindTexture(GL_TEXTURE_2D, models[0]->getTexture()->getTextureID());
- glBindBuffer(GL_ARRAY_BUFFER, models[0]->getModel()->getVertexBuffer());
- glVertexAttribPointer(shader->getAttribLocation("vertex0"), 3, GL_FLOAT, GL_FALSE, 0, 0);
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, models[0]->getModel()->getIndexBuffer());
- glBindBuffer(GL_ARRAY_BUFFER, models[0]->getModel()->getTexCoordBuffer());
- glVertexAttribPointer(shader->getAttribLocation("texCoord0"), 2, GL_FLOAT, GL_FALSE, 0, 0);
- glDrawElements(GL_TRIANGLES, models[0]->getModel()->getIndexCount(), GL_UNSIGNED_INT, NULL);
- //
- shader->sendUniform4x4("mv", models[1]->getModelview(camera->getModelview()).getArray());
- glActiveTexture(GL_TEXTURE0);
- glBindTexture(GL_TEXTURE_2D, models[1]->getTexture()->getTextureID());
- glBindBuffer(GL_ARRAY_BUFFER, models[1]->getModel()->getVertexBuffer());
- glVertexAttribPointer(shader->getAttribLocation("vertex0"), 3, GL_FLOAT, GL_FALSE, 0, 0);
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, models[1]->getModel()->getIndexBuffer());
- glBindBuffer(GL_ARRAY_BUFFER, models[1]->getModel()->getTexCoordBuffer());
- glVertexAttribPointer(shader->getAttribLocation("texCoord0"), 2, GL_FLOAT, GL_FALSE, 0, 0);
- glDrawElements(GL_TRIANGLES, models[1]->getModel()->getIndexCount(), GL_UNSIGNED_INT, NULL);
- //
- ////////// Shadowmap
- shader2->bindShader();
- shader2->enableVertexAttribArrays();
- shader2->sendUniform4x4("pm", (shadowmapTexture->getProjection()*shadowmapTexture->getModelview()).getArray());
- shader2->sendUniform("texture0", 0);
- glActiveTexture(GL_TEXTURE0);
- glBindTexture(GL_TEXTURE_2D, shadowmap->getTextureID());
- glBindBuffer(GL_ARRAY_BUFFER, shadowmapTexture->getVertexBuffer());
- glVertexAttribPointer(shader2->getAttribLocation("vertex0"), 2, GL_FLOAT, GL_FALSE, 0, 0);
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, shadowmapTexture->getIndexBuffer());
- glBindBuffer(GL_ARRAY_BUFFER, shadowmapTexture->getTexCoordBuffer());
- glVertexAttribPointer(shader2->getAttribLocation("texCoord0"), 2, GL_FLOAT, GL_FALSE, 0, 0);
- glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, NULL);
- glBindBuffer(GL_ARRAY_BUFFER, 0);
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
- shader2->disableVertexAttribArrays();
- glutSwapBuffers();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement