// // Created by vlad on 23.03.23. // #include "render.h" #include "../graphics/MeshLoader.h" #include "../graphics/Shader.h" #include static Mesh* mesh_xyz; static Mesh* mesh_sphere; static Mesh* mesh_cone; static Shader* shader; void renderScene(Camera& cam) { auto projview = cam.getProjection() * cam.getView(); shader->use(); shader->uniformMatrix("projview", projview); // мировой центр shader->uniformMatrix("model", glm::mat4(1.0f)); mesh_xyz->draw(); // снеговик, типа в ряд по частям по оси X mesh_sphere->draw(); auto translate = glm::translate(glm::mat4(1.0f), glm::vec3(2, 0 ,0)); auto scale_0_5 = glm::scale(glm::mat4(1.0f), glm::vec3(0.5, 0.5 ,0.5)); shader->uniformMatrix("model", translate * scale_0_5); mesh_sphere->draw(); shader->uniformMatrix("model", translate * translate * scale_0_5 * scale_0_5); mesh_sphere->draw(); shader->uniformMatrix("model", translate * translate * translate * scale_0_5); mesh_cone->draw(); } int loadResources() { mesh_xyz = MeshLoader::loadMesh("res/xyz"); if (mesh_xyz == nullptr) { std::cerr << "Failed to load 'xyz' mesh!" << std::endl; return -1; } mesh_sphere = MeshLoader::loadMesh("res/sphere"); if (mesh_sphere == nullptr) { std::cerr << "Failed to load 'sphere' mesh!" << std::endl; return -1; } mesh_cone = MeshLoader::loadMesh("res/cone"); if (mesh_cone == nullptr) { std::cerr << "Failed to load 'cone' mesh!" << std::endl; return -1; } shader = Shader::loadShader("res/main-colored.vsh", "res/main-colored.fsh"); if (shader == nullptr) { return -1; } return 0; } void unloadResources() { delete mesh_xyz; delete mesh_cone; delete mesh_sphere; delete shader; }