Advertisement
Guest User

Untitled

a guest
Nov 28th, 2014
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.30 KB | None | 0 0
  1. #pragma once
  2.  
  3. #include <glmglm.hpp>
  4.  
  5. struct Triangle
  6. {
  7. glm::vec3 _vertex0, _vertex1, _vertex2;
  8. Triangle(glm::vec3 vertex0, glm::vec3 vertex1, glm::vec3 vertex2)
  9. {
  10. _vertex0 = vertex0;
  11. _vertex1 = vertex1;
  12. _vertex2 = vertex2;
  13. }
  14.  
  15. Triangle(glm::vec4 vertex0, glm::vec4 vertex1, glm::vec4 vertex2)
  16. {
  17. _vertex0 = glm::vec3(vertex0.x, vertex0.y, vertex0.z);
  18. _vertex1 = glm::vec3(vertex1.x, vertex1.y, vertex1.z);
  19. _vertex2 = glm::vec3(vertex2.x, vertex2.y, vertex2.z);
  20. }
  21. };
  22.  
  23. struct Asset
  24. {
  25. Asset() { }
  26. Asset(std::string assetOBJFile)
  27. {
  28. glGenVertexArrays(1, &vertexArrayID);
  29. glBindVertexArray(vertexArrayID);
  30.  
  31. programID = LoadShaders("vertexShader.txt", "fragmentShader.txt");
  32.  
  33. // Read our .obj file
  34. loadOBJ(assetOBJFile.c_str(), originalTriangles, vertices, faces);
  35.  
  36. boundingSphere = BoundingSphere(vertices);
  37.  
  38. // Load it into a VBO
  39. glGenBuffers(1, &vertexbuffer);
  40. glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
  41. glBufferData(GL_ARRAY_BUFFER, originalTriangles.size() * sizeof(Triangle), &originalTriangles[0], GL_STATIC_DRAW);
  42.  
  43. //velocity = glm::vec3(0.0, 1.0, 1.0);
  44. velocity = glm::vec3(0.0, 0.0, 0.0);
  45. position = glm::vec3(0.0, 0.0, 0.0);
  46.  
  47. lastTime = glfwGetTime();
  48. }
  49.  
  50. GLuint vertexArrayID;
  51. GLuint programID;
  52.  
  53. GLuint vertexbuffer;
  54.  
  55. std::vector<GLuint> faces;
  56. std::vector<glm::vec3> vertices;
  57. std::vector<Triangle*> originalTriangles;
  58. std::vector<Triangle*> triangles;
  59.  
  60. BoundingSphere boundingSphere;
  61.  
  62. glm::vec3 velocity;
  63.  
  64. double lastTime;
  65. glm::vec3 position;
  66. };
  67.  
  68. void renderAsset(Asset asset)
  69. {
  70. glUseProgram(asset.programID);
  71.  
  72. GLuint cameraID = glGetUniformLocation(asset.programID, "camera");
  73. glUniformMatrix4fv(cameraID, 1, GL_FALSE, &camera[0][0]);
  74.  
  75. GLuint positionID = glGetUniformLocation(asset.programID, "position");
  76. glUniformMatrix4fv(positionID, 1, GL_FALSE, &glm::translate(glm::mat4(), asset.position)[0][0]);
  77.  
  78. glEnableVertexAttribArray(0);
  79.  
  80. glBindBuffer(GL_ARRAY_BUFFER, asset.vertexbuffer);
  81. glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, (void*)0);
  82. glDrawArrays(GL_TRIANGLES, 0, asset.originalTriangles.size()* 9);
  83.  
  84. glDisableVertexAttribArray(0);
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement