Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2012
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.78 KB | None | 0 0
  1. void render(){     
  2.     glClearColor(0.0, 0.0, 0.0, 0.0);
  3.        
  4.     Shader* shader;
  5.  
  6.     ////////// Shadowmap
  7.     glBindFramebuffer(GL_FRAMEBUFFER, shadowmap->getFBO());
  8.     glBindTexture(GL_TEXTURE_2D, 0);
  9.  
  10.     glViewport(0, 0, shadowmap->getTextureWidth(), shadowmap->getTextureHeight());
  11.     glClear(GL_DEPTH_BUFFER_BIT);
  12.     glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
  13.     //glCullFace(GL_FRONT);
  14.  
  15.     /*mat4 o;
  16.     o.setIdentity();
  17.     o.ortho(-10, 10, -10, 10, -10, 20);*/
  18.  
  19.     //
  20.         shader = shader1;
  21.         /*shader->bindShader();
  22.         shader->enableVertexAttribArrays();
  23.         shader->sendUniform4x4("pmv", (light->getProjection()*models[0]->getModelview(light->getModelview())).getArray());
  24.  
  25.         glBindBuffer(GL_ARRAY_BUFFER, models[0]->getModel()->getVertexBuffer());
  26.         glVertexAttribPointer(shader->getAttribLocation("vertex0"), 3, GL_FLOAT, GL_FALSE, 0, 0);
  27.  
  28.         glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, models[0]->getModel()->getIndexBuffer());
  29.    
  30.         glDrawElements(GL_TRIANGLES, models[0]->getModel()->getIndexCount(), GL_UNSIGNED_INT, NULL);*/
  31.     //
  32.         shader->bindShader();
  33.         shader->enableVertexAttribArrays();
  34.         shader->sendUniform4x4("pmv", (light->getProjection()*models[1]->getModelview(light->getModelview())).getArray());
  35.  
  36.         glBindBuffer(GL_ARRAY_BUFFER, models[1]->getModel()->getVertexBuffer());
  37.         glVertexAttribPointer(shader->getAttribLocation("vertex0"), 3, GL_FLOAT, GL_FALSE, 0, 0);
  38.  
  39.         glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, models[1]->getModel()->getIndexBuffer());
  40.    
  41.         glDrawElements(GL_TRIANGLES, models[1]->getModel()->getIndexCount(), GL_UNSIGNED_INT, NULL);
  42.     //
  43.  
  44.     glBindFramebuffer(GL_FRAMEBUFFER, 0);
  45.     glViewport(0, 0, wndSize[0], wndSize[1]);
  46.     glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
  47.     glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
  48.     //glCullFace(GL_BACK);
  49.  
  50.     ////////// Objekt
  51.     mat4 bias(0.5, 0, 0, 0,
  52.               0, 0.5, 0, 0,
  53.               0, 0, 0.5, 0,
  54.               0.5, 0.5, 0.5, 1);
  55.    
  56.     glActiveTexture(GL_TEXTURE1);
  57.     glBindTexture(GL_TEXTURE_2D, shadowmap->getTextureID());
  58.  
  59.     shader = shader0;  
  60.     shader->bindShader();
  61.     shader->enableVertexAttribArrays();
  62.     shader->sendUniform("texture0", 0);
  63.     shader->sendUniform4x4("p", camera->getProjection().getArray());
  64.     shader->sendUniform4x4("shadowBPMV", (bias*light->getProjection()*light->getModelview()).getArray());
  65.     shader->sendUniform("shadowMap", 1);
  66.     shader->sendUniform("pixelOffset", shadowmap->getPixelOffset().x, shadowmap->getPixelOffset().y);
  67.  
  68.     // 
  69.         shader->sendUniform4x4("mv", models[0]->getModelview(camera->getModelview()).getArray());
  70.        
  71.         glActiveTexture(GL_TEXTURE0);
  72.         glBindTexture(GL_TEXTURE_2D, models[0]->getTexture()->getTextureID());
  73.  
  74.         glBindBuffer(GL_ARRAY_BUFFER, models[0]->getModel()->getVertexBuffer());
  75.         glVertexAttribPointer(shader->getAttribLocation("vertex0"), 3, GL_FLOAT, GL_FALSE, 0, 0);
  76.  
  77.         glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, models[0]->getModel()->getIndexBuffer());
  78.  
  79.         glBindBuffer(GL_ARRAY_BUFFER, models[0]->getModel()->getTexCoordBuffer());
  80.         glVertexAttribPointer(shader->getAttribLocation("texCoord0"), 2, GL_FLOAT, GL_FALSE, 0, 0);
  81.  
  82.         glDrawElements(GL_TRIANGLES, models[0]->getModel()->getIndexCount(), GL_UNSIGNED_INT, NULL);
  83.     //
  84.         shader->sendUniform4x4("mv", models[1]->getModelview(camera->getModelview()).getArray());
  85.  
  86.         glActiveTexture(GL_TEXTURE0);
  87.         glBindTexture(GL_TEXTURE_2D, models[1]->getTexture()->getTextureID());
  88.        
  89.         glBindBuffer(GL_ARRAY_BUFFER, models[1]->getModel()->getVertexBuffer());
  90.         glVertexAttribPointer(shader->getAttribLocation("vertex0"), 3, GL_FLOAT, GL_FALSE, 0, 0);
  91.  
  92.         glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, models[1]->getModel()->getIndexBuffer());
  93.  
  94.         glBindBuffer(GL_ARRAY_BUFFER, models[1]->getModel()->getTexCoordBuffer());
  95.         glVertexAttribPointer(shader->getAttribLocation("texCoord0"), 2, GL_FLOAT, GL_FALSE, 0, 0);
  96.  
  97.         glDrawElements(GL_TRIANGLES, models[1]->getModel()->getIndexCount(), GL_UNSIGNED_INT, NULL);
  98.     //
  99.  
  100.     ////////// Shadowmap
  101.     shader2->bindShader();
  102.     shader2->enableVertexAttribArrays();
  103.     shader2->sendUniform4x4("pm", (shadowmapTexture->getProjection()*shadowmapTexture->getModelview()).getArray());
  104.     shader2->sendUniform("texture0", 0);
  105.                            
  106.     glActiveTexture(GL_TEXTURE0);
  107.     glBindTexture(GL_TEXTURE_2D, shadowmap->getTextureID());
  108.                                
  109.     glBindBuffer(GL_ARRAY_BUFFER, shadowmapTexture->getVertexBuffer());
  110.     glVertexAttribPointer(shader2->getAttribLocation("vertex0"), 2, GL_FLOAT, GL_FALSE, 0, 0);
  111.  
  112.     glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, shadowmapTexture->getIndexBuffer());
  113.  
  114.     glBindBuffer(GL_ARRAY_BUFFER, shadowmapTexture->getTexCoordBuffer());
  115.     glVertexAttribPointer(shader2->getAttribLocation("texCoord0"), 2, GL_FLOAT, GL_FALSE, 0, 0);
  116.            
  117.     glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, NULL);
  118.  
  119.     glBindBuffer(GL_ARRAY_BUFFER, 0);
  120.     glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
  121.            
  122.     shader2->disableVertexAttribArrays();
  123.            
  124.     glutSwapBuffers();
  125. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement