bool load_content() { // Create plane mesh meshes["plane"] = mesh(geometry_builder::create_plane()); // Create scene meshes["box"] = mesh(geometry_builder::create_box()); meshes["tetra"] = mesh(geometry_builder::create_tetrahedron()); meshes["pyramid"] = mesh(geometry_builder::create_pyramid()); meshes["disk"] = mesh(geometry_builder::create_disk(20)); meshes["cylinder"] = mesh(geometry_builder::create_cylinder(20, 20)); meshes["sphere"] = mesh(geometry_builder::create_sphere(20, 20)); meshes["torus"] = mesh(geometry_builder::create_torus(20, 20, 1.0f, 5.0f)); // Transform objects meshes["box"].get_transform().scale = vec3(5.0f, 5.0f, 5.0f); meshes["box"].get_transform().translate(vec3(-10.0f, 2.5f, -30.0f)); meshes["tetra"].get_transform().scale = vec3(4.0f, 4.0f, 4.0f); meshes["tetra"].get_transform().translate(vec3(-30.0f, 10.0f, -10.0f)); meshes["pyramid"].get_transform().scale = vec3(5.0f, 5.0f, 5.0f); meshes["pyramid"].get_transform().translate(vec3(-10.0f, 7.5f, -30.0f)); meshes["disk"].get_transform().scale = vec3(3.0f, 1.0f, 3.0f); meshes["disk"].get_transform().translate(vec3(-10.0f, 11.5f, -30.0f)); meshes["disk"].get_transform().rotate(vec3(half_pi<float>(), 0.0f, 0.0f)); meshes["cylinder"].get_transform().scale = vec3(5.0f, 5.0f, 5.0f); meshes["cylinder"].get_transform().translate(vec3(-25.0f, 2.5f, -25.0f)); meshes["sphere"].get_transform().scale = vec3(2.5f, 2.5f, 2.5f); meshes["sphere"].get_transform().translate(vec3(-25.0f, 10.0f, -25.0f)); meshes["torus"].get_transform().translate(vec3(-25.0f, 10.0f, -25.0f)); meshes["torus"].get_transform().rotate(vec3(half_pi<float>(), 0.0f, 0.0f)); // Load texture tex = texture("textures/checker.png"); // Load in shaders eff.add_shader("27_Texturing_Shader/simple_texture.vert", GL_VERTEX_SHADER); eff.add_shader("27_Texturing_Shader/simple_texture.frag", GL_FRAGMENT_SHADER); // Build effect eff.build(); // Set camera properties cam.set_position(vec3(0.0f, 10.0f, 0.0f)); cam.set_target(vec3(0.0f, 0.0f, 0.0f)); cam.set_projection(quarter_pi<float>(), renderer::get_screen_aspect(), 0.1f, 1000.0f); return true; }
bool load_content() { // Create plane mesh meshes["plane"] = mesh(geometry_builder::create_plane()); // Create scene meshes["box"] = mesh(geometry_builder::create_box()); meshes["tetra"] = mesh(geometry_builder::create_tetrahedron()); meshes["pyramid"] = mesh(geometry_builder::create_pyramid()); meshes["disk"] = mesh(geometry_builder::create_disk(20)); meshes["cylinder"] = mesh(geometry_builder::create_cylinder(20, 20)); meshes["sphere"] = mesh(geometry_builder::create_sphere(20, 20)); meshes["torus"] = mesh(geometry_builder::create_torus(20, 20, 1.0f, 5.0f)); // Transform objects meshes["box"].get_transform().scale = vec3(5.0f, 5.0f, 5.0f); meshes["box"].get_transform().translate(vec3(-10.0f, 2.5f, -30.0f)); meshes["tetra"].get_transform().scale = vec3(4.0f, 4.0f, 4.0f); meshes["tetra"].get_transform().translate(vec3(-30.0f, 10.0f, -10.0f)); meshes["pyramid"].get_transform().scale = vec3(5.0f, 5.0f, 5.0f); meshes["pyramid"].get_transform().translate(vec3(-10.0f, 7.5f, -30.0f)); meshes["disk"].get_transform().scale = vec3(3.0f, 1.0f, 3.0f); meshes["disk"].get_transform().translate(vec3(-10.0f, 11.5f, -30.0f)); meshes["disk"].get_transform().rotate(vec3(half_pi<float>(), 0.0f, 0.0f)); meshes["cylinder"].get_transform().scale = vec3(5.0f, 5.0f, 5.0f); meshes["cylinder"].get_transform().translate(vec3(-25.0f, 2.5f, -25.0f)); meshes["sphere"].get_transform().scale = vec3(2.5f, 2.5f, 2.5f); meshes["sphere"].get_transform().translate(vec3(-25.0f, 10.0f, -25.0f)); meshes["torus"].get_transform().translate(vec3(-25.0f, 10.0f, -25.0f)); meshes["torus"].get_transform().rotate(vec3(half_pi<float>(), 0.0f, 0.0f)); // *********************** // Set materials // - all emissive is black // - all specular is white // - all shininess is 25 // *********************** //map<string, material>::iterator it = materials.begin(); it!; for (auto &m : materials) { m.second.set_shininess(50); m.second.set_specular(vec4(1.0, 1.0, 1.0, 1.0)); m.second.set_emissive(vec4(0.0, 0.0, 0.0, 1.0)); } // Red box materials["box"].set_diffuse(vec4(1.0, 0.0, 0.0, 1.0)); meshes["box"].set_material(materials["box"]); // Green tetra materials["tetra"].set_diffuse(vec4(0.0, 1.0, 0.0, 1.0)); meshes["tetra"].set_material( materials["tetra"]); // Blue pyramid materials["pyramid"].set_diffuse(vec4(0.0, 0.0, 1.0, 1.0)); meshes["pyramid"].set_material(materials["pyramid"]); // Yellow disk materials["disk"].set_diffuse(vec4(1.0, 1.0, 0.0, 1.0)); meshes["disk"].set_material(materials["disk"]); // Magenta cylinder materials["cylinder"].set_diffuse(vec4(0.0, 1.0, 1.0, 1.0)); meshes["cylinder"].set_material(materials["cylinder"]); // Cyan sphere materials["sphere"].set_diffuse(vec4(1.0, 0.0, 1.0, 1.0)); meshes["sphere"].set_material(materials["sphere"]); // White torus materials["torus"].set_diffuse(vec4(1.0, 1.0, 1.0, 1.0)); meshes["torus"].set_material(materials["torus"]); // create light source meshes["light"] = mesh(geometry_builder::create_sphere(20, 20)); meshes["light"].get_transform().position = vec3(1.0f, 1.0f, -1.0f); // ************************** // Load texture - checked.gif // ************************** tex = texture("..\\resources\\textures\\checked.gif"); // ******************* // Set lighting values // ******************* // ambient intensity (0.3, 0.3, 0.3) light.set_ambient_intensity(vec4(0.3, 0.3, 0.3, 1.0)); // Light colour white light.set_light_colour(vec4(1.0f, 1.0f, 1.0f, 1.0f)); // Light direction (1.0, 1.0, -1.0) light.set_direction(vec3(1.0f, 1.0f, -1.0f)); // Load in shaders eff.add_shader("..\\resources\\shaders\\gouraud.vert", GL_VERTEX_SHADER); eff.add_shader("..\\resources\\shaders\\gouraud.frag", GL_FRAGMENT_SHADER); // Build effect eff.build(); if (CHECK_GL_ERROR) { __debugbreak(); } // Set camera properties cam.set_position(vec3(50.0f, 10.0f, 50.0f)); cam.set_target(vec3(0.0f, 0.0f, 0.0f)); auto aspect = static_cast<float>(renderer::get_screen_width()) / static_cast<float>(renderer::get_screen_height()); cam.set_projection(quarter_pi<float>(), aspect, 2.414f, 1000.0f); if (CHECK_GL_ERROR) { __debugbreak(); } return true; }