Advertisement
Guest User

Draw

a guest
Aug 14th, 2016
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.37 KB | None | 0 0
  1. void Ex8::draw(){
  2. GLfloat t = glfwGetTime();
  3.  
  4. glm::mat4 model;
  5. model = glm::rotate(model, t, glm::vec3(0.f, 1.f, 0.f));
  6. model = glm::scale(model, glm::vec3(0.5f, 0.5f, 0.5f));
  7.  
  8. glm::mat4 view = glm::lookAt( _eye, glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(0.0f, 1.0f, 0.0f));
  9.  
  10. glm::mat4 transform;
  11.  
  12. glm::mat4 lModel;
  13. lModel = glm::rotate(lModel, -t, glm::vec3(1.f, 1.f, 1.f));
  14. lModel = glm::translate(lModel, glm::vec3(0.7f, 0.f, 0.f));
  15. lModel = glm::scale(lModel, glm::vec3(0.1f, 0.1f, 0.1f));
  16. transform = _projection * view * lModel;
  17.  
  18. _light.pos = utils::m4_v3(lModel);
  19.  
  20. _shaderO.bind();
  21.  
  22. GLuint id = _shaderO.getID();
  23.  
  24. glUniformMatrix4fv(glGetUniformLocation(id, "model"), 1, GL_FALSE, glm::value_ptr(model));
  25. glUniformMatrix4fv(glGetUniformLocation(id, "view"), 1, GL_FALSE, glm::value_ptr(view));
  26. glUniformMatrix4fv(glGetUniformLocation(id, "projection"), 1, GL_FALSE, glm::value_ptr(_projection));
  27. glUniform3fv(glGetUniformLocation(id, "eyePos"), 1, glm::value_ptr(eye));
  28.  
  29. GLint ambLoc = glGetUniformLocation(id, "material.ambient");
  30. GLint difLoc = glGetUniformLocation(id, "material.diffuse");
  31. GLint spcLoc = glGetUniformLocation(id, "material.specular");
  32. GLint shnLoc = glGetUniformLocation(id, "material.shininess");
  33.  
  34.  
  35. _material.bindTo(_shaderO);
  36. _light.bindTo(_shaderO);
  37.  
  38. glBindVertexArray(_vaoObj);
  39. glDrawArrays(GL_TRIANGLES, 0, 36);
  40. glBindVertexArray(NULL);
  41. _shaderO.unbind();
  42.  
  43.  
  44. _shaderL.bind();
  45. glUniformMatrix4fv(glGetUniformLocation(_shaderL.getID(), "transform"), 1, GL_FALSE, glm::value_ptr(transform));
  46. glBindVertexArray(_vaoObj);
  47. glDrawArrays(GL_TRIANGLES, 0, 36);
  48. glBindVertexArray(NULL);
  49. _shaderL.unbind();
  50. }
  51.  
  52.  
  53.  
  54.  
  55. void Material_8::bindTo(const ShaderProg & shader) {
  56. if (!diffuse || !specular) return;
  57.  
  58. GLuint id = shader.getID();
  59.  
  60. GLint ambLoc = glGetUniformLocation(id, "material.ambient");
  61. GLint difLoc = glGetUniformLocation(id, "material.diffuse");
  62. GLint spcLoc = glGetUniformLocation(id, "material.specular");
  63. GLint shnLoc = glGetUniformLocation(id, "material.shininess");
  64.  
  65. glUniform3fv(ambLoc, 1, glm::value_ptr(ambient));
  66. glUniform1f(shnLoc, shininess);
  67.  
  68. glActiveTexture(GL_TEXTURE0);
  69. glBindTexture(GL_TEXTURE_2D, diffuse->getID());
  70. glUniform1i(difLoc, GL_TEXTURE0);
  71.  
  72. glActiveTexture(GL_TEXTURE1);
  73. glBindTexture(GL_TEXTURE_2D, specular->getID());
  74. glUniform1i(spcLoc, GL_TEXTURE1);
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement