Guest User

Untitled

a guest
Oct 10th, 2012
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.97 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.     mat4 o;
  8.     o.setIdentity();
  9.     o.ortho(-1, 1, -1, 1, -10, 10);
  10.    
  11.     glBindFramebuffer(GL_FRAMEBUFFER, shadowmap->getFBO());
  12.     glBindTexture(GL_TEXTURE_2D, 0);
  13.  
  14.     glViewport(0, 0, shadowmap->getTextureWidth(), shadowmap->getTextureHeight());
  15.     glClear(GL_DEPTH_BUFFER_BIT);
  16.     glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
  17.     glCullFace(GL_FRONT);
  18.    
  19.     //
  20.         shader = shader1;
  21.         shader->bindShader();
  22.         shader->enableVertexAttribArrays();
  23.         shader->sendUniform4x4("pmv", (o*models[0]->getModelMatrix(light->getViewMatrix())).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", (o*models[1]->getModelMatrix(light->getViewMatrix())).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("shadowBP", (bias*o.inverse()).getArray());
  64.     shader->sendUniform("shadowMap", 1);
  65.     shader->sendUniform("pixelOffset", shadowmap->getPixelOffset().x, shadowmap->getPixelOffset().y);
  66.  
  67.     // 
  68.         shader->sendUniform4x4("pmv", (camera->getProjectionMatrix()*models[0]->getModelMatrix(camera->getViewMatrix())).getArray());
  69.         shader->sendUniform4x4("shadowMV", models[0]->getModelMatrix(light->getViewMatrix()).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("pmv", (camera->getProjectionMatrix()*models[1]->getModelMatrix(camera->getViewMatrix())).getArray());
  85.         shader->sendUniform4x4("shadowMV", models[1]->getModelMatrix(light->getViewMatrix()).getArray());
  86.  
  87.         glActiveTexture(GL_TEXTURE0);
  88.         glBindTexture(GL_TEXTURE_2D, models[1]->getTexture()->getTextureID());
  89.        
  90.         glBindBuffer(GL_ARRAY_BUFFER, models[1]->getModel()->getVertexBuffer());
  91.         glVertexAttribPointer(shader->getAttribLocation("vertex0"), 3, GL_FLOAT, GL_FALSE, 0, 0);
  92.  
  93.         glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, models[1]->getModel()->getIndexBuffer());
  94.  
  95.         glBindBuffer(GL_ARRAY_BUFFER, models[1]->getModel()->getTexCoordBuffer());
  96.         glVertexAttribPointer(shader->getAttribLocation("texCoord0"), 2, GL_FLOAT, GL_FALSE, 0, 0);
  97.  
  98.         glDrawElements(GL_TRIANGLES, models[1]->getModel()->getIndexCount(), GL_UNSIGNED_INT, NULL);
  99.     //
  100.            
  101.     glutSwapBuffers();
  102. }
Advertisement
Add Comment
Please, Sign In to add comment