Ignore:
Timestamp:
09/17/15 17:17:20 (10 years ago)
Author:
epyon
Message:
  • stl/short_string - minor fix
  • stl/utility - max for 3 arguments
  • stl/math length_sq
  • interface/context - proper handling of buffer ownage in va's
  • wx/canvas - sleep added
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/nv/interface/context.hh

    r463 r469  
    125125
    126126                template < typename VTX, slot SLOT >
    127                 void add_vertex_buffer_impl( vertex_array, buffer, const false_type& )
     127                void add_vertex_buffer_impl( vertex_array, buffer, bool, const false_type& )
    128128                {
    129129                }
    130130
    131131                template < typename VTX, slot SLOT >
    132                 void add_vertex_buffer_impl( vertex_array va, buffer vb, const true_type& )
     132                void add_vertex_buffer_impl( vertex_array va, buffer vb, bool owned, const true_type& )
    133133                {
    134134                        typedef slot_info< VTX, SLOT > vinfo;
    135135                        typedef datatype_traits< typename vinfo::value_type > dt_traits;
    136                         add_vertex_buffer( va, SLOT, vb, type_to_enum< typename dt_traits::base_type >::type, dt_traits::size, vinfo::offset, sizeof( VTX ), false );
     136                        add_vertex_buffer( va, SLOT, vb, type_to_enum< typename dt_traits::base_type >::type, dt_traits::size, vinfo::offset, sizeof( VTX ), owned );
    137137                }
    138138
    139139                template < typename VTX, slot SLOT >
    140                 void add_vertex_buffer( vertex_array va, buffer vb )
    141                 {
    142                         add_vertex_buffer_impl< VTX, SLOT >( va, vb, has_slot< VTX, SLOT >() );
     140                void add_vertex_buffer( vertex_array va, buffer vb, bool owned )
     141                {
     142                        add_vertex_buffer_impl< VTX, SLOT >( va, vb, owned, has_slot< VTX, SLOT >() );
    143143                }
    144144
    145145                template < typename VTX >
    146                 void add_vertex_buffers( vertex_array va, buffer vb )
    147                 {
    148                         add_vertex_buffer< VTX, slot::POSITION >  ( va, vb );
    149                         add_vertex_buffer< VTX, slot::TEXCOORD >  ( va, vb );
    150                         add_vertex_buffer< VTX, slot::NORMAL   >  ( va, vb );
    151                         add_vertex_buffer< VTX, slot::TANGENT >   ( va, vb );
    152                         add_vertex_buffer< VTX, slot::BONEINDEX > ( va, vb );
    153                         add_vertex_buffer< VTX, slot::BONEWEIGHT >( va, vb );
    154                         add_vertex_buffer< VTX, slot::COLOR >     ( va, vb );
     146                void add_vertex_buffers( vertex_array va, buffer vb, bool owned )
     147                {
     148                        add_vertex_buffer< VTX, slot::POSITION >  ( va, vb, owned );
     149                        add_vertex_buffer< VTX, slot::TEXCOORD >  ( va, vb, owned );
     150                        add_vertex_buffer< VTX, slot::NORMAL   >  ( va, vb, owned );
     151                        add_vertex_buffer< VTX, slot::TANGENT >   ( va, vb, owned );
     152                        add_vertex_buffer< VTX, slot::BONEINDEX > ( va, vb, owned );
     153                        add_vertex_buffer< VTX, slot::BONEWEIGHT >( va, vb, owned );
     154                        add_vertex_buffer< VTX, slot::COLOR >     ( va, vb, owned );
    155155                }
    156156
     
    182182                vertex_array create_vertex_array( const VTX* v, size_t count, buffer_hint hint )
    183183                {
    184                         // TODO: vb will not be owned or freed!
    185184                        vertex_array va = create_vertex_array();
    186185                        buffer       vb = m_device->create_buffer( VERTEX_BUFFER, hint, count * sizeof( VTX ), v );
    187                         add_vertex_buffers< VTX >( va, vb );
     186                        add_vertex_buffers< VTX >( va, vb, true );
    188187                        return va;
    189188                }
Note: See TracChangeset for help on using the changeset viewer.