Changeset 116
- Timestamp:
- 06/11/13 22:33:08 (12 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/nv/interface/device.hh
r101 r116 51 51 const vertex_attribute_base* i = m->get_indices(); 52 52 index_buffer* vb = create_index_buffer( hint, i->get_size(), i->get_data() ); 53 result->set_index_buffer( vb, true );53 result->set_index_buffer( vb, i->get_base_type(), true ); 54 54 } 55 55 return result; -
trunk/nv/interface/vertex_buffer.hh
r111 r116 93 93 { 94 94 public: 95 vertex_array() : m_map(), m_index( nullptr ) {}95 vertex_array() : m_map(), m_index( nullptr ), m_index_owner( false ), m_index_type(INT) {} 96 96 void add_vertex_buffer( int location, vertex_buffer* buffer, datatype datatype, int components, int offset = 0, int stride = 0, bool owner = true ) 97 97 { … … 107 107 } 108 108 }; 109 void set_index_buffer( index_buffer* buffer, bool owner )109 void set_index_buffer( index_buffer* buffer, datatype datatype, bool owner ) 110 110 { 111 m_index = buffer;111 m_index = buffer; 112 112 m_index_owner = owner; 113 m_index_type = datatype; 113 114 } 115 bool has_index_buffer() const { return m_index != nullptr; } 116 datatype get_index_buffer_type() const { return m_index_type; } 114 117 virtual void bind() = 0; 115 118 virtual void unbind() = 0; … … 124 127 vertex_buffer_attribute_map m_map; 125 128 index_buffer* m_index; 126 bool m_index_owner; 129 bool m_index_owner; 130 datatype m_index_type; 127 131 }; 128 132 -
trunk/src/gl/gl_context.cc
r108 r116 363 363 p->bind(); 364 364 va->bind(); 365 glDrawArrays( primitive_to_enum(prim), 0, count); 365 if ( va->has_index_buffer() ) 366 { 367 glDrawElements( primitive_to_enum(prim), count, datatype_to_gl_enum( va->get_index_buffer_type() ), 0 ); 368 } 369 else 370 { 371 glDrawArrays( primitive_to_enum(prim), 0, count); 372 } 366 373 va->unbind(); 367 374 p->unbind(); -
trunk/src/gl/gl_vertex_buffer.cc
r100 r116 92 92 } 93 93 94 if ( m_index ) 95 { 96 m_index->bind(); 97 } 94 98 } 95 99 96 100 void gl_vertex_array::unbind() 97 101 { 102 if ( m_index ) 103 { 104 m_index->unbind(); 105 } 106 98 107 for ( vertex_buffer_attribute_map::iterator i = m_map.begin(); i != m_map.end(); ++i ) 99 108 {
Note: See TracChangeset
for help on using the changeset viewer.