int main() { /* Create GL Window */ if (!initWindow()) return -1; /* Initialise vertex buffers for cube */ CubeMap cubeMap; cubeMap.loadCubeMap("../textures/cubemaps/Yokohama/"); /* Load shaders needed */ Entity* box = new Entity(glm::vec3(0)); box->setShader(ShaderManager::loadShader("simpleReflect")); box->loadFromFile("../models/Cube.3ds"); rigidBodies.push_back(new RigidBody(box)); box = new Entity(glm::vec3(0,2,0)); box->setShader(ShaderManager::loadShader("simpleReflect")); box->loadFromFile("../models/Cube.3ds"); rigidBodies.push_back(new RigidBody(box)); std::cout << "some amazing feature has been added"; glEnable(GL_DEPTH_TEST); while (!glfwWindowShouldClose(window)) { /* Rendering Code */ // Calculate deltatime of current frame GLfloat currentFrame = glfwGetTime(); deltaTime = currentFrame - lastFrame; lastFrame = currentFrame; // Check if any events have been activiated (key pressed, mouse moved etc.) and call corresponding response functions glfwPollEvents(); do_movement(); //do_rotation(); glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glm::mat4 viewMatrix = glm::lookAt ( cameraPos, //where you are cameraPos + cameraFront, // what you are looking at, however we move, the camera keeps looking at the target direction cameraUp ); glm::mat4 projectionMatrix = glm::perspective( fov, (GLfloat)WIDTH/(GLfloat)HEIGHT, 0.1f, 1000.0f ); for(int i =0; i < rigidBodies.size(); i++) { //for(int j = 0; j < rigidBodies.size(); j++) //{ // if (i ==j) // continue; // //if(rigidBodies[i]->aabb->collies(rigidBodies[j]->aabb)) // //do something with shaders to indicate collision in broadphase //} rigidBodies[i]->Update(deltaTime); rigidBodies[i]->entity->getShader()->setUniformMatrix4fv("projectionMat", projectionMatrix); //cubeMap.getShader()->setUniformMatrix4fv("projectionMat", projectionMatrix); rigidBodies[i]->entity->getShader()->setUniformMatrix4fv("viewMat", viewMatrix); //cubeMap.getShader()->setUniformMatrix4fv("viewMat", viewMatrix); //dragonModel.getShader()->setUniformMatrix4fv("viewMat", view_mat); rigidBodies[i]->entity->getShader()->setUniformVector4fv("camPos", glm::vec4(cameraPos, 1.0f)); //glm:: vec3 cam_pos= glm::vec3 (cam_pos); //dragonModel.getShader()->setUniformVector4fv("camPos", glm::vec4(cam_pos, 1.0f)); //rigidBodies[i]->entity->getShader()->setUniformVector4fv("modelMat", rigidBodies[i]->entity->getModelMat()); rigidBodies[i]->entity->draw(); //rigidBodies[i]->ApplyGravity(); } glDisable(GL_TEXTURE_GEN_S); glDisable(GL_TEXTURE_GEN_T); glDisable(GL_TEXTURE_GEN_R); //cubeMap.drawSkyBox(); glEnable(GL_TEXTURE_GEN_S); glEnable(GL_TEXTURE_GEN_T); glEnable(GL_TEXTURE_GEN_R); glfwSwapBuffers(window); glfwPollEvents(); } glfwTerminate(); return 0; }