Changeset 412 for trunk/src/gfx/skeletal_mesh.cc
- Timestamp:
- 07/09/15 14:40:36 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/gfx/skeletal_mesh.cc
r411 r412 13 13 nv::skeletal_mesh_cpu::skeletal_mesh_cpu( context* a_context, const mesh_data* a_mesh_data, const mesh_nodes_data* bones ) 14 14 : skeletal_mesh( a_context ) 15 , m_data( a_mesh_data ) 16 { 17 const raw_data_channel* pnt_chan = a_mesh_data->get_channel<md5_vtx_pnt>(); 18 m_pntdata.assign( reinterpret_cast<const md5_vtx_pnt*>( pnt_chan->data ), pnt_chan->count ); 15 { 16 const raw_data_channel* pnt_chan = a_mesh_data->get_channel<md5_vtx_pnt>(); 17 const raw_data_channel* pntiw_chan = a_mesh_data->get_channel<md5_vtx_pntiw>(); 18 19 m_pntdata.assign( reinterpret_cast<const md5_vtx_pnt*>( pnt_chan->data ), pnt_chan->element_count() ); 19 20 m_bone_offset.resize( bones->get_count() ); 20 21 m_transform.resize( bones->get_count() ); … … 24 25 m_bone_offset[i] = transform( bones->get_node(i)->transform ); 25 26 } 27 26 28 m_vtx_data = a_mesh_data->get_channel_data<md5_vtx_pntiw>(); 27 29 m_indices = a_mesh_data->get_count(); 28 m_va = a_context->create_vertex_array( a_mesh_data, 29 STREAM_DRAW ); 30 m_va = a_context->create_vertex_array(); 31 32 array_view< raw_data_channel* > channels = a_mesh_data->get_raw_channels(); 33 for ( uint32 ch = 0; ch < channels.size(); ++ch ) 34 { 35 const raw_data_channel* channel = channels[ch]; 36 if ( channel->element_count() > 0 && channel != pntiw_chan ) 37 { 38 const data_descriptor& desc = channel->descriptor(); 39 if ( desc[0].vslot == slot::INDEX ) 40 { 41 buffer b = a_context->get_device()->create_buffer( INDEX_BUFFER, STREAM_DRAW, channel->raw_size(), channel->raw_data() ); 42 a_context->set_index_buffer( m_va, b, desc[0].etype, true ); 43 } 44 else 45 { 46 buffer b = a_context->get_device()->create_buffer( VERTEX_BUFFER, STREAM_DRAW, channel->raw_size(), channel->raw_data() ); 47 a_context->add_vertex_buffers( m_va, b, channel ); 48 } 49 } 50 } 51 30 52 m_pbuffer = a_context->find_buffer( m_va, slot::POSITION ); 31 53 }
Note: See TracChangeset
for help on using the changeset viewer.