Changeset 458


Ignore:
Timestamp:
08/14/15 20:16:26 (10 years ago)
Author:
epyon
Message:
  • starting work on stl/type_erasure
  • mesh_creator - fixed tangent generation!
  • skeletal_mesh - allow for empty meshes
Location:
trunk
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/gfx/mesh_creator.cc

    r457 r458  
    215215        raw_data_channel g_channel  = data_channel_creator::create< vertex_g >( m_pos_channel->size() );
    216216        vec4* tangents              = &( data_channel_access< vertex_g >( &g_channel ).data()[0].tangent );
     217        fill_n( tangents, m_pos_channel->size(), vec4() );
    217218        vec3* tangents2             = new vec3[ m_pos_channel->size() ];
    218219        uint32 tri_count = m_idx_channel ? m_idx_channel->size() / 3 : m_tex_channel->size() / 3;
     
    246247                }
    247248
    248                 const vec2& w1 = *reinterpret_cast<const vec2*>( m_tex_channel->raw_data() + m_tex_channel->element_size()*ti0 + m_tex_offset );
    249                 const vec2& w2 = *reinterpret_cast<const vec2*>( m_tex_channel->raw_data() + m_tex_channel->element_size()*ti1 + m_tex_offset );
    250                 const vec2& w3 = *reinterpret_cast<const vec2*>( m_tex_channel->raw_data() + m_tex_channel->element_size()*ti2 + m_tex_offset );
     249                vec2 w1 = *reinterpret_cast<const vec2*>( m_tex_channel->raw_data() + m_tex_channel->element_size()*ti0 + m_tex_offset );
     250                vec2 w2 = *reinterpret_cast<const vec2*>( m_tex_channel->raw_data() + m_tex_channel->element_size()*ti1 + m_tex_offset );
     251                vec2 w3 = *reinterpret_cast<const vec2*>( m_tex_channel->raw_data() + m_tex_channel->element_size()*ti2 + m_tex_offset );
    251252                vec2 st1 = w3 - w1;
    252253                vec2 st2 = w2 - w1;
  • trunk/src/gfx/skeletal_mesh.cc

    r431 r458  
    235235
    236236nv::skeletal_mesh_gpu::skeletal_mesh_gpu( context* a_context, const data_channel_set* a_mesh, const mesh_nodes_data* a_bone_data )
    237         : skeletal_mesh( a_context ), m_bone_data( a_bone_data ), m_transform( nullptr )
    238 {
    239         m_va          = a_context->create_vertex_array( a_mesh, nv::STATIC_DRAW );
    240         m_index_count = a_mesh->get_channel_size( slot::INDEX );
     237        : skeletal_mesh( a_context ), m_bone_data( a_bone_data ), m_index_count( 0 ), m_transform( nullptr )
     238{
     239        if ( a_mesh )
     240        {
     241                m_va = a_context->create_vertex_array( a_mesh, nv::STATIC_DRAW );
     242                m_index_count = a_mesh->get_channel_size( slot::INDEX );
     243        }
    241244        if ( m_bone_data )
    242245        {
     
    264267{
    265268        if ( node_id == 0 ) return transform();
     269        if ( node_id == uint32(-1) ) return transform( m_transform[0] );
    266270        return transform( m_transform[ node_id ] );
    267271}
Note: See TracChangeset for help on using the changeset viewer.