- Timestamp:
- 08/25/14 02:43:30 (11 years ago)
- Location:
- trunk
- Files:
-
- 11 added
- 1 deleted
- 16 edited
- 8 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/nv.lua
r320 r321 112 112 includedirs { "." } 113 113 files { "nv/gui/**.hh", "src/gui/**.cc" } 114 links { "nv-core", "nv-io", "nv-gfx" }114 links { "nv-core", "nv-io", "nv-gfx", "nv-lua" } 115 115 targetname "nv-gui" 116 116 -
trunk/tests/cachebuf_test/cachebuf_test.lua
r102 r321 3 3 files { "nv_cachebuf_test.cc" } 4 4 includedirs { "../../" } 5 targetname "nv_gui_test" 6 links { "nv" } 5 links { "nv-core", "nv-gl", "nv-gfx" } 6 targetdir "../../bin" 7 targetname "nv_cachebuf_test" 7 8 -
trunk/tests/cachebuf_test/nv_cachebuf_test.cc
r319 r321 5 5 #include <nv/core/logging.hh> 6 6 #include <nv/core/logger.hh> 7 #include <glm/glm.hpp>8 #include <glm/gtc/matrix_transform.hpp>9 #include <glm/gtc/type_ptr.hpp>10 7 #include <nv/core/string.hh> 11 #include <cstdlib> // rand 12 #include <ctime> // time 13 8 #include <nv/core/random.hh> 14 9 #include <nv/gfx/sliced_buffer.hh> 15 10 … … 259 254 nv::buffer buffer = m_quad_cache->get_vertex_buffer(); 260 255 #else 261 m_quad_cache = new gcache( m_context, nv:: DYNAMIC_DRAW, 20, true);256 m_quad_cache = new gcache( m_context, nv::VERTEX_BUFFER, nv::DYNAMIC_DRAW, 20 ); 262 257 nv::buffer buffer = m_quad_cache->get_buffer(); 263 258 #endif … … 286 281 m_context->set_index_buffer( m_va, m_quad_cache->get_index_buffer(), nv::USHORT, false ); 287 282 nv::buffer buffer = m_quad_cache->get_vertex_buffer(); 283 m_context->replace_vertex_buffer( m_va, buffer, nv::slot::POSITION, false ); 288 284 #else 289 285 nv::buffer buffer = m_quad_cache->get_buffer(); 286 m_context->replace_vertex_buffer( m_va, buffer, false ); 290 287 #endif 291 288 } 292 289 293 290 m_window->get_context()->clear( m_clear_state ); 294 // m_program->set_uniform( "tex", 0 );295 291 #ifdef INDEXED_TEST 296 292 size_t draw_size = m_quad_cache->get_index_size(); … … 330 326 void application::spawn_window() 331 327 { 332 glm::ivec2 a ( std::rand() % 600, std::rand() % 400);333 glm::ivec2 b ( std::rand() % 200, std::rand() % 200);328 glm::ivec2 a = nv::random::get().range( nv::ivec2(), nv::ivec2( 600, 400 ) ); 329 glm::ivec2 b = nv::random::get().range( nv::ivec2(), nv::ivec2( 200, 200 ) ); 334 330 NV_LOG( nv::LOG_INFO, "Spawn (" << a.x << "," << a.y << "x" << b.x << "," << b.y << ")" ); 335 331 m_windows.emplace_back( m_quad_cache, a, a + b, glm::vec4( 0, 0, 1, 1 ) ); … … 339 335 { 340 336 if ( m_windows.size() == 0 ) return; 341 size_t index = rand() % m_windows.size();337 size_t index = nv::random::get().urand( m_windows.size() ); 342 338 m_windows.erase( m_windows.begin() + index ); 343 339 } … … 346 342 { 347 343 if ( m_windows.size() == 0 ) return; 348 size_t index = rand() % m_windows.size();344 size_t index = nv::random::get().urand( m_windows.size() ); 349 345 m_windows[ index ].change_color( nv::vec4( (float)rand() / float(RAND_MAX), (float)rand() / float(RAND_MAX), (float)rand() / float(RAND_MAX), 1.0 ) ); 350 346 } … … 353 349 { 354 350 if ( m_windows.size() == 0 ) return; 355 size_t index = rand() % m_windows.size();351 size_t index = nv::random::get().urand( m_windows.size() ); 356 352 NV_LOG( nv::LOG_INFO, "Simplify " << index ); 357 353 m_windows[ index ].simplify_toggle(); … … 372 368 int main(int, char* []) 373 369 { 374 std::srand((unsigned int) std::time(0));370 nv::random::get().randomize(); 375 371 nv::logger log(nv::LOG_TRACE); 376 372 log.add_sink( new nv::log_file_sink("log.txt"), nv::LOG_TRACE ); -
trunk/tests/cachebuf_test/premake4.lua
r102 r321 5 5 flags { "ExtraWarnings", "NoPCH" } 6 6 7 configuration "gmake"8 buildoptions "-std=c++11"9 10 7 configuration "debug" 11 8 defines { "DEBUG" } 12 9 flags { "Symbols", "StaticRuntime" } 13 objdir ( _ACTION.."/debug")10 objdir ("../../".._ACTION.."/debug") 14 11 15 12 configuration "release" 16 13 defines { "NDEBUG" } 17 14 flags { "Optimize", "StaticRuntime" } 18 objdir ( _ACTION.."/release")15 objdir ("../../".._ACTION.."/release") 19 16 20 17 dofile("cachebuf_test.lua") 21 18 dofile("../../nv.lua") 22 19 23 if _ACTION == "clean" then24 for action in premake.action.each() do25 os.rmdir(action.trigger)26 end27 end -
trunk/tests/gui_test/gui_test.lua
r127 r321 4 4 includedirs { "../../" } 5 5 targetname "nv_gui_test" 6 links { "nv" } 6 links { "nv-core", "nv-gl", "nv-gui" } 7 targetdir "../../bin" 7 8 -
trunk/tests/gui_test/nv_gui_test.cc
r319 r321 4 4 #include <nv/core/logging.hh> 5 5 #include <nv/core/logger.hh> 6 #include <cstdlib> // rand 7 #include <ctime> // time 6 #include <nv/core/random.hh> 8 7 9 8 class application … … 84 83 void application::spawn_window() 85 84 { 86 glm::ivec2 a( std::rand() % 600, std::rand() % 400);87 glm::ivec2 b( std::rand() % 200 + 40, std::rand() % 200 + 40);85 nv::ivec2 a = nv::random::get().range( nv::ivec2(), nv::ivec2( 600, 400 ) ); 86 nv::ivec2 b = nv::random::get().range( nv::ivec2( 40, 40 ), nv::ivec2( 240, 240 ) ); 88 87 nv::gui::handle e = m_guienv->create_element( nv::rectangle(a).dim(b) ); 89 88 m_guienv->set_class( e, "window" ); … … 96 95 { 97 96 if ( m_windows.size() == 0 ) return; 98 size_t index = rand() % m_windows.size();97 size_t index = nv::random::get().urand( m_windows.size() ); 99 98 m_guienv->destroy_element( m_windows[index] ); 100 99 m_windows.erase( m_windows.begin() + index ); … … 118 117 int main(int, char* []) 119 118 { 120 std::srand((unsigned int) std::time(0));119 nv::random::get().randomize(); 121 120 nv::logger log(nv::LOG_TRACE); 122 121 log.add_sink( new nv::log_file_sink("log.txt"), nv::LOG_TRACE ); -
trunk/tests/gui_test/premake4.lua
r127 r321 5 5 flags { "ExtraWarnings", "NoPCH" } 6 6 7 configuration "gmake"8 buildoptions "-std=c++11"9 10 7 configuration "debug" 11 8 defines { "DEBUG" } 12 9 flags { "Symbols", "StaticRuntime" } 13 objdir ( _ACTION.."/debug")10 objdir ("../../".._ACTION.."/debug") 14 11 15 12 configuration "release" 16 13 defines { "NDEBUG" } 17 14 flags { "Optimize", "StaticRuntime" } 18 objdir ( _ACTION.."/release")15 objdir ("../../".._ACTION.."/release") 19 16 20 17 dofile("gui_test.lua") 21 18 dofile("../../nv.lua") 22 23 if _ACTION == "clean" then24 for action in premake.action.each() do25 os.rmdir(action.trigger)26 end27 end -
trunk/tests/lualib_test/nv_lualib_test.cc
r214 r321 4 4 #include <nv/lua/lua_raw.hh> 5 5 #include <nv/lua/lua_glm.hh> 6 #include <nv/logger.hh> 7 #include <nv/math.hh> 8 #include <nv/object.hh> 9 #include <string> 6 #include <nv/core/logger.hh> 7 #include <nv/core/math.hh> 8 #include <nv/core/string.hh> 10 9 #include <iostream> 11 10 #include <functional> 12 #include <nv/gui/gui_element.hh>13 11 14 12 void hello( const std::string& h ) … … 31 29 nv::lua::register_glm( state ); 32 30 // run the Lua script 33 state.register_function<decltype( hello),&hello>( "hello" );31 state.register_function<decltype(&hello),&hello>( "hello" ); 34 32 state.do_file( "init.lua" ); 35 33 //std::cout << nv::function_traits<decltype(hello)>::arg_count << std::endl; -
trunk/tests/lualib_test/premake4.lua
r52 r321 8 8 defines { "DEBUG" } 9 9 flags { "Symbols", "StaticRuntime" } 10 objdir ( _ACTION.."/debug")10 objdir ("../../".._ACTION.."/debug") 11 11 12 12 configuration "release" 13 13 defines { "NDEBUG" } 14 14 flags { "Optimize", "StaticRuntime" } 15 objdir ( _ACTION.."/release")15 objdir ("../../".._ACTION.."/release") 16 16 17 17 dofile("lualib_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 -
trunk/tests/md2_test/md2_test.lua
r189 r321 1 -- md2 load test project definition 2 project "md2_test" 1 project "nv_md2_test" 3 2 kind "ConsoleApp" 4 files { " md2_test.cc" }3 files { "nv_md2_test.cc" } 5 4 includedirs { "../../" } 6 targetname "md2_test" 7 links { "nv" } 8 5 targetname "nv_md2_test" 6 links { "nv-core", "nv-gl", "nv-formats" } 7 targetdir "../../bin" 8 -
trunk/tests/md2_test/nv_md2_test.cc
r239 r321 1 #include <nv/common.hh>2 1 #include <nv/gfx/keyframed_mesh.hh> 3 #include <nv/interface/vertex_buffer.hh>4 2 #include <nv/gl/gl_device.hh> 5 3 #include <nv/gfx/image.hh> 6 4 #include <nv/interface/context.hh> 7 5 #include <nv/interface/window.hh> 8 #include <nv/interface/program.hh>9 #include <nv/interface/texture2d.hh>10 6 #include <nv/interface/mesh_loader.hh> 11 7 #include <nv/io/c_file_system.hh> 12 8 #include <nv/formats/md2_loader.hh> 13 #include <nv/ profiler.hh>14 #include <nv/ logging.hh>15 #include <nv/ logger.hh>16 #include <nv/ math.hh>17 #include <nv/ time.hh>18 #include <nv/ string.hh>9 #include <nv/core/profiler.hh> 10 #include <nv/core/logging.hh> 11 #include <nv/core/logger.hh> 12 #include <nv/core/math.hh> 13 #include <nv/core/time.hh> 14 #include <nv/core/string.hh> 19 15 #include <glm/gtx/rotate_vector.hpp> 20 16 … … 27 23 ~application(); 28 24 protected: 29 nv::device* m_device; 30 nv::window* m_window; 31 nv::texture2d* m_diffuse; 32 nv::program* m_program; 25 nv::device* m_device; 26 nv::window* m_window; 27 nv::context* m_context; 28 nv::texture m_diffuse; 29 nv::program m_program; 33 30 34 31 nv::clear_state m_clear_state; … … 36 33 nv::scene_state m_scene_state; 37 34 38 nv::mesh_data* m_mesh_data; 39 nv::keyframed_mesh* m_mesh; 35 nv::mesh_data* m_mesh_data; 36 nv::keyframed_mesh* m_mesh; 37 nv::animation_entry* m_animation; 40 38 }; 41 39 … … 43 41 { 44 42 NV_PROFILE( "app_construct" ); 45 m_device = new nv::gl_device(); 46 m_window = m_device->create_window( 800, 600, false ); 43 m_device = new nv::gl_device(); 44 m_window = m_device->create_window( 800, 600, false ); 45 m_context = m_window->get_context(); 47 46 48 47 nv::sampler sampler( nv::sampler::LINEAR, nv::sampler::REPEAT ); 49 48 nv::image_data* data = m_device->create_image_data( "data/manc.png" ); 50 m_diffuse = m_device->create_texture 2d( data->get_size(), nv::RGB, nv::UBYTE, sampler, (void*)data->get_data());49 m_diffuse = m_device->create_texture( data, sampler ); 51 50 delete data; 52 51 … … 64 63 { 65 64 NV_PROFILE( "app_initialize" ); 66 m_program = m_device->create_program( nv::slurp( " obj.vert" ), nv::slurp( "obj.frag" ) );65 m_program = m_device->create_program( nv::slurp( "md2.vert" ), nv::slurp( "md2.frag" ) ); 67 66 68 67 nv::md2_loader* loader; … … 80 79 { 81 80 NV_PROFILE("create_mesh"); 82 m_mesh = new nv::keyframed_mesh_gpu( m_ window->get_context(), m_mesh_data, nullptr, m_program);81 m_mesh = new nv::keyframed_mesh_gpu( m_context, m_mesh_data, nullptr ); 83 82 } 84 83 … … 96 95 nv::fps_counter_class< nv::system_us_timer > fps_counter; 97 96 98 m_mesh->setup_animation( 0, m_mesh->get_max_frames(), 2, true ); 97 m_animation = new nv::animation_entry( "", true, 5, 0.0f, m_mesh->get_max_frames()-1 ); 98 m_mesh->run_animation( m_animation ); 99 99 100 100 while(!keypress) … … 103 103 ticks = m_device->get_ticks(); 104 104 nv::uint32 elapsed = ticks - last_ticks; 105 m_window->get_context()->clear( m_clear_state ); 106 m_mesh->update( elapsed ); 105 m_context->clear( m_clear_state ); 107 106 glm::vec3 eye = glm::rotate( glm::vec3( 100.0f, 25.0f, 0.0f ), (ticks / 20.f), glm::vec3( 0.0,1.0,0.0 ) ); 108 107 … … 111 110 m_scene_state.get_camera().set_perspective(60.0f, 1.0f*800.0f/600.0f, 0.1f, 1000.0f); 112 111 113 m_diffuse->bind( 0 ); 114 m_program->set_opt_uniform( "light_position", glm::vec3(120.0, 120.0, 0) ); 115 m_program->set_opt_uniform( "light_diffuse", glm::vec4(1.0,1.0,1.0,1.0) ); 116 m_program->set_opt_uniform( "light_specular", glm::vec4(1.0,1.0,1.0,1.0) ); 112 m_context->bind( m_diffuse, nv::TEX_DIFFUSE ); 113 m_device->set_opt_uniform( m_program, "light_position", glm::vec3(120.0, 120.0, 0) ); 114 m_device->set_opt_uniform( m_program, "light_diffuse", glm::vec4(1.0,1.0,1.0,1.0) ); 115 m_device->set_opt_uniform( m_program, "light_specular", glm::vec4(1.0,1.0,1.0,1.0) ); 116 m_mesh->update_animation( m_animation, ticks ); 117 117 m_mesh->update( m_program ); 118 m_ window->get_context()->draw( m_render_state, m_scene_state, m_program, m_mesh);118 m_context->draw( nv::TRIANGLES, m_render_state, m_scene_state, m_program, m_mesh->get_vertex_array(), m_mesh->get_index_count() ); 119 119 m_window->swap_buffers(); 120 120 … … 148 148 application::~application() 149 149 { 150 delete m_program;150 m_device->release( m_program ); 151 151 delete m_mesh_data; 152 152 delete m_mesh; 153 delete m_diffuse; 153 delete m_animation; 154 m_device->release( m_diffuse ); 154 155 delete m_window; 155 156 delete m_device; -
trunk/tests/md2_test/premake4.lua
r189 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("md2_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 -
trunk/tests/md3_test/nv_md3_test.cc
r319 r321 65 65 } 66 66 67 void update( nv::uint32 ms , nv::program program)67 void update( nv::uint32 ms ) 68 68 { 69 69 m_mesh->update_animation( m_entry, ms ); 70 } 71 72 void update( nv::program program ) 73 { 70 74 m_mesh->update( program ); 71 75 } … … 144 148 NV_PROFILE( "app_initialize" ); 145 149 m_program = m_device->create_program( 146 nv::slurp( GPU_ANIMATION ? " obj_gpu.vert" : "obj_cpu.vert" ),147 nv::slurp( " obj.frag" )150 nv::slurp( GPU_ANIMATION ? "md3_gpu.vert" : "md3_cpu.vert" ), 151 nv::slurp( "md3.frag" ) 148 152 ); 149 153 m_torso = new mesh_part( "data/upper.md3", m_window ); … … 174 178 last_ticks = ticks; 175 179 ticks = m_device->get_ticks(); 176 nv::uint32 elapsed = ticks - last_ticks; 177 m_torso->update( ticks, m_program ); 178 m_legs->update( ticks, m_program ); 180 m_torso->update( ticks ); 181 m_legs->update( ticks ); 179 182 { 180 183 NV_PROFILE( "clear" ); … … 204 207 205 208 m_scene_state.set_model( model ); 209 m_legs->update( m_program ); 206 210 m_window->get_context()->draw( nv::TRIANGLES, m_render_state, m_scene_state, m_program, m_legs->get_mesh()->get_vertex_array(), m_legs->get_mesh()->get_index_count() ); 207 211 … … 209 213 model = m_legs->get_transform( 0 ); 210 214 m_scene_state.set_model( model ); 215 m_torso->update( m_program ); 211 216 m_window->get_context()->draw( nv::TRIANGLES, m_render_state, m_scene_state, m_program, m_torso->get_mesh()->get_vertex_array(), m_torso->get_mesh()->get_index_count() ); 212 217 213 218 glm::mat4 head = model * m_torso->get_transform( 0 ); //, last_torso_frame, torso_frame, torso_interpolate ); 214 219 m_scene_state.set_model( head ); 220 m_head->update( m_program ); 215 221 m_window->get_context()->draw( nv::TRIANGLES, m_render_state, m_scene_state, m_program, m_head->get_mesh()->get_vertex_array(), m_head->get_mesh()->get_index_count() ); 216 222 217 223 glm::mat4 weapon = model * m_torso->get_transform( 2 ); //, last_torso_frame, torso_frame, torso_interpolate ); 224 m_weapon->update( m_program ); 218 225 m_scene_state.set_model( weapon ); 219 226 m_context->bind( m_diffuse_weapon, nv::TEX_DIFFUSE ); -
trunk/tests/md5_test/nv_md5_test.cc
r261 r321 1 #include <nv/co mmon.hh>1 #include <nv/core/common.hh> 2 2 #include <iomanip> 3 3 #include <nv/gfx/keyframed_mesh.hh> 4 #include <nv/interface/vertex_buffer.hh>5 4 #include <nv/gl/gl_device.hh> 6 5 #include <nv/gfx/image.hh> 7 6 #include <nv/interface/context.hh> 8 7 #include <nv/interface/window.hh> 9 #include <nv/interface/program.hh>10 #include <nv/interface/texture2d.hh>11 8 #include <nv/interface/mesh_loader.hh> 12 9 #include <nv/io/c_file_system.hh> 13 10 #include <nv/formats/md5_loader.hh> 14 #include <nv/ profiler.hh>15 #include <nv/ logging.hh>16 #include <nv/ logger.hh>17 #include <nv/ math.hh>18 #include <nv/ time.hh>19 #include <nv/ string.hh>11 #include <nv/core/profiler.hh> 12 #include <nv/core/logging.hh> 13 #include <nv/core/logger.hh> 14 #include <nv/core/math.hh> 15 #include <nv/core/time.hh> 16 #include <nv/core/string.hh> 20 17 #include <nv/gfx/skeletal_mesh.hh> 21 18 #include <glm/gtx/rotate_vector.hpp> … … 37 34 nv::device* m_device; 38 35 nv::window* m_window; 39 nv::texture2d* m_diffuse; 40 nv::texture2d* m_specular; 41 nv::texture2d* m_normal; 36 nv::context* m_context; 37 nv::texture m_diffuse; 38 nv::texture m_specular; 39 nv::texture m_normal; 42 40 nv::clear_state m_clear_state; 43 41 nv::render_state m_render_state; … … 45 43 46 44 nv::skeletal_mesh* m_mesh; 47 nv::program *m_program;48 nv::m d5_mesh_data*m_mesh_data;49 nv:: md5_animation* m_animation;45 nv::program m_program; 46 nv::mesh_data* m_mesh_data; 47 nv::animation_entry* m_animation; 50 48 51 49 }; … … 54 52 { 55 53 NV_PROFILE( "app_construct" ); 56 m_device = new nv::gl_device(); 57 m_window = m_device->create_window( 800, 600, false ); 54 m_device = new nv::gl_device(); 55 m_window = m_device->create_window( 800, 600, false ); 56 m_context = m_window->get_context(); 58 57 m_animation = nullptr; 59 58 60 59 nv::sampler sampler( nv::sampler::LINEAR, nv::sampler::REPEAT ); 61 60 nv::image_data* data = m_device->create_image_data( "data/qshambler_d.png" ); 62 m_diffuse = m_device->create_texture 2d( data->get_size(), nv::RGBA, nv::UBYTE, sampler, (void*)data->get_data());61 m_diffuse = m_device->create_texture( data, sampler ); 63 62 delete data; 64 63 data = m_device->create_image_data( "data/qshambler_s.png" ); 65 m_specular = m_device->create_texture 2d( data->get_size(), nv::RGBA, nv::UBYTE, sampler, (void*)data->get_data());64 m_specular = m_device->create_texture( data, sampler ); 66 65 delete data; 67 66 68 67 data = m_device->create_image_data( "data/qshambler_local.png" ); 69 m_normal = m_device->create_texture 2d( data->get_size(), nv::RGBA, nv::UBYTE, sampler, (void*)data->get_data());68 m_normal = m_device->create_texture( data, sampler ); 70 69 delete data; 71 70 … … 98 97 { 99 98 NV_PROFILE("create_mesh"); 100 m_mesh_data = (nv::md5_mesh_data*)loader->release_mesh_data();101 m_mesh = new nv::skeletal_mesh ( m_window->get_context(), m_mesh_data);99 m_mesh_data = loader->release_mesh_data(); 100 m_mesh = new nv::skeletal_mesh_cpu( m_context, m_mesh_data, loader->release_mesh_nodes_data() ); 102 101 delete loader; 103 102 } … … 125 124 last_ticks = ticks; 126 125 ticks = m_device->get_ticks(); 127 nv::uint32 elapsed = ticks - last_ticks; 128 m_mesh->update( elapsed ); 129 { 130 NV_PROFILE( "clear" ); 131 m_window->get_context()->clear( m_clear_state ); 132 } 126 m_mesh->update_animation( m_animation, ticks ); 127 m_context->clear( m_clear_state ); 133 128 134 129 { … … 141 136 m_scene_state.get_camera().set_perspective(60.0f, 1.0f*800.0f/600.0f, 0.1f, 1000.0f); 142 137 143 m_ diffuse ->bind( 0);144 m_ specular->bind( 1);145 m_ normal ->bind( 2);146 m_ program->set_opt_uniform("light_position", glm::vec3(180.0, 180.0, 0) );147 m_ program->set_opt_uniform("light_diffuse", glm::vec4(0.7,0.7,0.7,1.0) );148 m_ program->set_opt_uniform("light_specular", glm::vec4(1.0,1.0,1.0,1.0) );138 m_context->bind( m_diffuse, nv::TEX_DIFFUSE ); 139 m_context->bind( m_specular, nv::TEX_SPECULAR ); 140 m_context->bind( m_normal, nv::TEX_NORMAL ); 141 m_device->set_opt_uniform( m_program, "light_position", glm::vec3(180.0, 180.0, 0) ); 142 m_device->set_opt_uniform( m_program, "light_diffuse", glm::vec4(0.7,0.7,0.7,1.0) ); 143 m_device->set_opt_uniform( m_program, "light_specular", glm::vec4(1.0,1.0,1.0,1.0) ); 149 144 } 150 145 … … 158 153 ) ); 159 154 160 m_window->get_context()->draw( m_render_state, m_scene_state, m_program, m_mesh ); 155 m_mesh->update( m_program ); 156 m_context->draw( nv::TRIANGLES, m_render_state, m_scene_state, m_program, m_mesh->get_vertex_array(), m_mesh->get_index_count() ); 161 157 } 162 158 … … 206 202 if ( anim_file != nullptr ) 207 203 { 208 m_animation = new nv::md5_animation(); 209 if ( !m_animation->load_animation(*anim_file) ) 210 { 211 delete m_animation; 212 m_animation = nullptr; 213 } 214 m_mesh->setup_animation( m_animation ); 204 nv::md5_loader* loader = new nv::md5_loader(); 205 loader->load( *anim_file ); 215 206 delete anim_file; 207 m_animation = new nv::skeletal_animation_entry_cpu( "", loader->release_mesh_nodes_data(), true ); 208 m_mesh->run_animation( m_animation ); 209 delete loader; 216 210 } 217 211 } … … 220 214 application::~application() 221 215 { 222 delete m_program;216 m_device->release( m_program ); 223 217 delete m_mesh; 224 delete m_diffuse;218 m_device->release( m_diffuse ); 225 219 delete m_window; 226 220 delete m_device; -
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 -
trunk/tests/render_test/nv_render_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 #include <nv/logging.hh> 9 #include <nv/logger.hh> 10 #include <nv/math.hh> 11 #include <nv/string.hh> 5 #include <nv/core/logging.hh> 6 #include <nv/core/logger.hh> 7 #include <nv/core/math.hh> 8 #include <nv/core/string.hh> 12 9 13 10 const nv::uint16 size_x = 16; … … 63 60 ~application(); 64 61 protected: 65 nv::device* m_device; 66 nv::window* m_window; 67 nv::texture2d* m_texture; 62 nv::device* m_device; 63 nv::context* m_context; 64 nv::window* m_window; 65 nv::texture m_texture; 68 66 69 67 nv::clear_state m_clear_state; … … 71 69 nv::scene_state m_scene_state; 72 70 73 nv::program *m_char_program;74 nv::program *m_box_program;75 nv::vertex_array *m_char_va;76 nv::vertex_array *m_box_va;71 nv::program m_char_program; 72 nv::program m_box_program; 73 nv::vertex_array m_char_va; 74 nv::vertex_array m_box_va; 77 75 unsigned int m_count; 78 76 }; … … 89 87 application::application() 90 88 { 91 m_device = new nv::gl_device(); 92 m_window = m_device->create_window( 800, 600, false ); 89 m_device = new nv::gl_device(); 90 m_window = m_device->create_window( 800, 600, false ); 91 m_context = m_window->get_context(); 93 92 94 93 nv::image_data* sprites = m_device->create_image_data( "spritesheet.png" ); 95 94 nv::sampler sampler( nv::sampler::NEAREST, nv::sampler::REPEAT ); 96 m_texture = m_device->create_texture 2d( sprites->get_size(), nv::RGBA, nv::UBYTE, sampler, (void*)sprites->get_data());95 m_texture = m_device->create_texture( sprites, sampler ); 97 96 delete sprites; 98 97 … … 119 118 v.emplace_back( nv::i8vec3( x, h, y ), mt ); 120 119 m_char_program = m_device->create_program( nv::slurp( "char.vert" ), nv::slurp( "char.frag" ) ); 121 m_char_va = m_ device->create_vertex_array( v, nv::STATIC_DRAW );120 m_char_va = m_context->create_vertex_array( v, nv::STATIC_DRAW ); 122 121 } 123 122 … … 176 175 m_count = v.size(); 177 176 m_box_program = m_device->create_program( nv::slurp( "box.vert" ), nv::slurp( "box.frag" ) ); 178 m_box_va = m_ device->create_vertex_array( v, nv::STATIC_DRAW );177 m_box_va = m_context->create_vertex_array( v, nv::STATIC_DRAW ); 179 178 } 180 179 … … 194 193 m_scene_state.get_camera().set_lookat(glm::vec3(0.0, 20.0, 5.0) + move, glm::vec3(0.0, 4.0, 0.0) + move, glm::vec3(0.0, 1.0, 0.0)); 195 194 196 m_ window->get_context()->clear( m_clear_state );197 m_ texture->bind(0 );198 m_ box_program->set_uniform("light", glm::vec3(8.5, 4.5, 6.5) + move );199 m_ window->get_context()->draw( nv::TRIANGLES, m_render_state, m_scene_state, m_box_program, m_box_va, m_count );200 201 m_ char_program->set_uniform("pos", move + glm::vec3( 8, 4.1, 6 ) );202 m_ window->get_context()->draw( nv::TRIANGLES, m_render_state, m_scene_state, m_char_program, m_char_va, 6 );195 m_context->clear( m_clear_state ); 196 m_context->bind( m_texture, nv::TEXTURE_0 ); 197 m_device->set_uniform( m_box_program, "light", glm::vec3(8.5, 4.5, 6.5) + move ); 198 m_context->draw( nv::TRIANGLES, m_render_state, m_scene_state, m_box_program, m_box_va, m_count ); 199 200 m_device->set_uniform( m_char_program, "pos", move + glm::vec3( 8, 4.1, 6 ) ); 201 m_context->draw( nv::TRIANGLES, m_render_state, m_scene_state, m_char_program, m_char_va, 6 ); 203 202 m_window->swap_buffers(); 204 203 … … 234 233 application::~application() 235 234 { 236 delete m_char_program;237 delete m_box_program;238 delete m_char_va;239 delete m_box_va;240 delete m_texture;235 m_device->release( m_char_program ); 236 m_device->release( m_box_program ); 237 m_context->release( m_char_va ); 238 m_context->release( m_box_va ); 239 m_device->release( m_texture ); 241 240 delete m_window; 242 241 delete m_device; -
trunk/tests/render_test/premake4.lua
r120 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("render_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 -
trunk/tests/render_test/render_test.lua
r120 r321 1 -- RL project definition 2 project "rl" 1 project "nv_render_test" 3 2 kind "ConsoleApp" 4 files { " rl.cc" }3 files { "nv_render_test.cc" } 5 4 includedirs { "../../" } 6 targetname "rl" 7 links { "nv" } 5 targetname "nv_render_test" 6 links { "nv-core", "nv-gl" } 7 targetdir "../../bin" 8 8
Note: See TracChangeset
for help on using the changeset viewer.