Changeset 321 for trunk/tests/objload_test
- Timestamp:
- 08/25/14 02:43:30 (11 years ago)
- Location:
- trunk/tests/objload_test
- Files:
-
- 4 edited
- 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; -
trunk/tests/objload_test/obj.frag
r139 r321 1 1 #version 120 2 2 3 uniform sampler2D diffuse;4 uniform sampler2D specular;3 uniform sampler2D nv_diffuse; 4 uniform sampler2D nv_specular; 5 5 uniform vec4 light_diffuse; 6 6 uniform vec4 light_specular; … … 23 23 float diffuse_value = max( dot( nlight_vector, nnormal ), 0.0 ); 24 24 25 vec3 diff_texel = vec3( texture2D( diffuse, v_texcoord ) );26 vec4 spec_texel = texture2D( specular, v_texcoord );25 vec3 diff_texel = vec3( texture2D( nv_diffuse, v_texcoord ) ); 26 vec4 spec_texel = texture2D( nv_specular, v_texcoord ); 27 27 28 28 float specular_amount = spec_texel.x; -
trunk/tests/objload_test/obj.vert
r161 r321 10 10 varying vec2 v_texcoord; 11 11 12 uniform mat4 matrix_mvp;12 uniform mat4 nv_m_mvp; 13 13 uniform mat4 nv_m_modelview; 14 14 uniform mat4 nv_m_projection; … … 24 24 25 25 v_texcoord = nv_texcoord; 26 gl_Position = matrix_mvp * vertex;26 gl_Position = nv_m_mvp * vertex; 27 27 } -
trunk/tests/objload_test/objload_test.lua
r137 r321 1 -- obj load test project definition 2 project "objload_test" 1 project "nv_objload_test" 3 2 kind "ConsoleApp" 4 files { " objload_test.cc" }3 files { "nv_objload_test.cc" } 5 4 includedirs { "../../" } 6 targetname " objload_test"7 links { "nv " }8 5 targetname "nv_objload_test" 6 links { "nv-core", "nv-gl", "nv-gfx", "nv-formats" } 7 targetdir "../../bin" -
trunk/tests/objload_test/premake4.lua
r137 r321 8 8 defines { "DEBUG" } 9 9 flags { "Symbols", "StaticRuntime" } 10 objdir ( _ACTION or "".."/debug")10 objdir ("../../".._ACTION.."/debug") 11 11 12 12 configuration "release" 13 13 defines { "NDEBUG" } 14 14 flags { "Optimize", "StaticRuntime" } 15 objdir ( _ACTION or "".."/release")15 objdir ("../../".._ACTION.."/release") 16 16 17 17 dofile("objload_test.lua") 18 18 dofile("../../nv.lua") 19 20 if _ACTION == "clean" then21 for action in premake.action.each() do22 os.rmdir(action.trigger)23 end24 end
Note: See TracChangeset
for help on using the changeset viewer.