Changeset 321 for trunk/tests/objload_test/nv_objload_test.cc
- Timestamp:
- 08/25/14 02:43:30 (11 years ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/tests/objload_test/nv_objload_test.cc
r239 r321 1 #include <nv/interface/vertex_buffer.hh>2 1 #include <nv/gl/gl_device.hh> 3 2 #include <nv/gfx/image.hh> 4 3 #include <nv/interface/context.hh> 5 4 #include <nv/interface/window.hh> 6 #include <nv/interface/program.hh>7 #include <nv/interface/texture2d.hh>8 5 #include <nv/interface/mesh_loader.hh> 9 6 #include <nv/io/c_file_system.hh> 10 7 #include <nv/formats/obj_loader.hh> 11 #include <nv/ logging.hh>12 #include <nv/ logger.hh>13 #include <nv/ math.hh>14 #include <nv/ string.hh>8 #include <nv/core/logging.hh> 9 #include <nv/core/logger.hh> 10 #include <nv/core/math.hh> 11 #include <nv/core/string.hh> 15 12 16 13 class application … … 23 20 protected: 24 21 nv::device* m_device; 22 nv::context* m_context; 25 23 nv::window* m_window; 26 nv::texture2d* m_diffuse; 27 nv::texture2d* m_specular; 24 nv::texture m_diffuse; 25 nv::texture m_specular; 26 nv::scene_state m_scene_state; 28 27 nv::clear_state m_clear_state; 29 28 nv::render_state m_render_state; 30 29 31 nv::vertex_array *m_va;32 nv::program *m_program;30 nv::vertex_array m_va; 31 nv::program m_program; 33 32 nv::mesh_data* m_mesh; 34 33 }; … … 38 37 m_device = new nv::gl_device(); 39 38 m_window = m_device->create_window( 800, 600, false ); 39 m_context = m_window->get_context(); 40 40 41 nv::sampler sampler( nv::sampler::LINEAR, nv::sampler::REPEAT ); 41 42 nv::image_data* sprites = m_device->create_image_data( "diffuse.png" );43 m_diffuse = m_device->create_texture2d( sprites->get_size(), nv::RGBA, nv::UBYTE, sampler, (void*)sprites->get_data() );44 delete sprites;45 42 46 sprites = m_device->create_image_data( "specular.png" ); 47 m_specular = m_device->create_texture2d( sprites->get_size(), nv::RGBA, nv::UBYTE, sampler, (void*)sprites->get_data() ); 48 delete sprites; 43 nv::image_data* image = m_device->create_image_data( "diffuse.png" ); 44 m_diffuse = m_device->create_texture( image, sampler ); 45 delete image; 46 47 image = m_device->create_image_data( "specular.png" ); 48 m_specular = m_device->create_texture( image, sampler ); 49 delete image; 49 50 50 51 m_clear_state.buffers = nv::clear_state::COLOR_AND_DEPTH_BUFFER; … … 63 64 nv::stream* mesh_file = fs.open( "mesh.obj" ); 64 65 65 // nv::mesh_loader* loader = new nv::obj_loader();66 // loader->load( *mesh_file );67 // nv::mesh_data_old* mesh = loader->release_mesh_data();68 // m_count = loader->get_size();69 // delete mesh_file;70 // delete loader;71 72 66 nv::obj_loader* loader = new nv::obj_loader(); 73 67 loader->load( *mesh_file ); … … 77 71 78 72 m_program = m_device->create_program( nv::slurp( "obj.vert" ), nv::slurp( "obj.frag" ) ); 79 80 // nv::vertex_buffer* vb = nullptr; 81 m_va = m_device->create_vertex_array( m_mesh, nv::STATIC_DRAW ); 73 m_va = m_context->create_vertex_array( m_mesh, nv::STATIC_DRAW ); 82 74 83 75 return true; … … 93 85 { 94 86 m_window->get_context()->clear( m_clear_state ); 87 m_scene_state.set_model( glm::mat4() ); 88 m_scene_state.get_camera().set_perspective(60.0f, 1.0f*800.0f/600.0f, 0.1f, 1000.0f); 89 m_scene_state.get_camera().set_lookat(glm::vec3(6.0f, 8.0f, 6.0f) + move, glm::vec3(0.0f, 4.0f, 0.0f) + move, glm::vec3(0.0, 1.0, 0.0)); 95 90 96 glm::mat4 model = glm::translate(glm::mat4(1.0f), glm::vec3(0.0f, 0.0f, 0.0f)); 97 glm::mat4 view = glm::lookAt(glm::vec3(6.0f, 8.0f, 6.0f) + move, glm::vec3(0.0f, 4.0f, 0.0f) + move, glm::vec3(0.0, 1.0, 0.0)); 98 glm::mat4 projection = glm::perspective(60.0f, 1.0f*800.0f/600.0f, 0.1f, 1000.0f); 99 glm::mat4 mv = view * model; 100 glm::mat3 normal_matrix = glm::transpose(glm::inverse(glm::mat3(mv))); 101 102 m_diffuse->bind( 0 ); 103 m_specular->bind( 1 ); 104 m_program->set_opt_uniform( "nv_m_modelview", mv ); 105 m_program->set_opt_uniform( "nv_m_projection", projection ); 106 m_program->set_opt_uniform( "nv_m_normal", normal_matrix ); 107 m_program->set_uniform( "matrix_mvp", projection * mv ); 108 m_program->set_uniform( "light_position", glm::vec3(12.0, 12.0, 0) ); 109 m_program->set_uniform( "light_diffuse", glm::vec4(0.7,0.7,0.7,1.0) ); 110 m_program->set_uniform( "light_specular", glm::vec4(1.0,1.0,1.0,1.0) ); 111 m_program->set_uniform( "custom_color_1", glm::vec3(1.0,0.0,0.0) ); 112 m_program->set_uniform( "custom_color_2", glm::vec3(0.0,0.0,1.0) ); 113 m_program->set_uniform( "diffuse", 0 ); 114 m_program->set_uniform( "specular", 1 ); 115 m_window->get_context()->draw( nv::TRIANGLES, m_render_state, m_program, m_va, m_mesh->get_count() ); 91 m_context->bind( m_diffuse, nv::TEX_DIFFUSE ); 92 m_context->bind( m_specular, nv::TEX_SPECULAR ); 93 m_device->set_uniform( m_program, "light_position", glm::vec3(12.0, 12.0, 0) ); 94 m_device->set_uniform( m_program, "light_diffuse", glm::vec4(0.7,0.7,0.7,1.0) ); 95 m_device->set_uniform( m_program, "light_specular", glm::vec4(1.0,1.0,1.0,1.0) ); 96 m_device->set_uniform( m_program, "custom_color_1", glm::vec3(1.0,0.0,0.0) ); 97 m_device->set_uniform( m_program, "custom_color_2", glm::vec3(0.0,0.0,1.0) ); 98 m_context->draw( nv::TRIANGLES, m_render_state, m_scene_state, m_program, m_va, m_mesh->get_count() ); 116 99 m_window->swap_buffers(); 117 100 … … 148 131 { 149 132 delete m_mesh; 150 delete m_program;151 delete m_diffuse;152 delete m_specular;133 m_device->release( m_program ); 134 m_device->release( m_diffuse ); 135 m_device->release( m_specular ); 153 136 delete m_window; 154 137 delete m_device;
Note: See TracChangeset
for help on using the changeset viewer.