Changeset 302 for trunk/src/gfx
- Timestamp:
- 08/07/14 19:06:34 (11 years ago)
- Location:
- trunk/src/gfx
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/gfx/debug_draw.cc
r237 r302 29 29 30 30 nv::debug_data::debug_data( device* a_device ) 31 : m_device( a_device ), m_program( nullptr ), m_va( nullptr)31 : m_device( a_device ), m_program( nullptr ), m_va() 32 32 { 33 33 m_program = m_device->create_program( nv_debug_draw_vertex_shader, nv_debug_draw_fragment_shader ); … … 36 36 void nv::debug_data::update() 37 37 { 38 delete m_va;38 m_device->release( m_va ); 39 39 m_va = m_device->create_vertex_array( m_data, nv::STATIC_DRAW ); 40 40 } … … 75 75 nv::debug_data::~debug_data() 76 76 { 77 delete m_va;77 m_device->release( m_va ); 78 78 delete m_program; 79 79 } -
trunk/src/gfx/keyframed_mesh.cc
r299 r302 15 15 using namespace nv; 16 16 17 nv::keyframed_mesh::keyframed_mesh( con st mesh_data* a_data, const mesh_nodes_data* a_tag_map )17 nv::keyframed_mesh::keyframed_mesh( context* a_context, const mesh_data* a_data, const mesh_nodes_data* a_tag_map ) 18 18 : animated_mesh() 19 , m_context( a_context ) 19 20 , m_mesh_data( a_data ) 20 21 , m_tag_map( a_tag_map ) … … 36 37 } 37 38 m_frame_count = m_vchannel->count / m_vertex_count; 39 m_pbuffer = buffer(); 38 40 } 39 41 … … 103 105 nv::keyframed_mesh::~keyframed_mesh() 104 106 { 105 delete m_va;107 m_context->get_device()->release( m_va ); 106 108 } 107 109 … … 122 124 123 125 nv::keyframed_mesh_gpu::keyframed_mesh_gpu( context* a_context, const mesh_data* a_data, const mesh_nodes_data* a_tag_map ) 124 : keyframed_mesh( a_ data, a_tag_map )126 : keyframed_mesh( a_context, a_data, a_tag_map ) 125 127 , m_loc_next_position( -1 ) 126 128 , m_loc_next_normal( -1 ) … … 129 131 , m_gpu_next_frame( 0xFFFFFFFF ) 130 132 { 131 m_va = a_context->get_device()->create_vertex_array( a_data, STATIC_DRAW ); 133 m_va = a_context->get_device()->create_vertex_array( a_data, STATIC_DRAW ); 134 m_pbuffer = a_context->get_device()->find_buffer( m_va, slot::POSITION ); 132 135 } 133 136 … … 137 140 if ( m_loc_next_position == -1 ) return; 138 141 animated_mesh::update( ms ); 139 142 device* dev = m_context->get_device(); 140 143 if ( m_gpu_last_frame != m_last_frame ) 141 144 { 142 m_va->update_vertex_buffer( slot::POSITION, m_last_frame * m_vertex_count * m_vsize ); 143 m_va->update_vertex_buffer( slot::NORMAL, m_last_frame * m_vertex_count * m_vsize + sizeof( vec3 ) ); 145 uint32 base_offset = m_last_frame * m_vertex_count * m_vsize; 146 dev->update_attribute_offset( m_va, slot::POSITION, base_offset ); 147 dev->update_attribute_offset( m_va, slot::NORMAL, base_offset + sizeof( vec3 ) ); 144 148 if ( m_has_tangent && m_loc_next_tangent != -1 ) 145 149 { 146 m_va->update_vertex_buffer( slot::TANGENT, m_last_frame * m_vertex_count * m_vsize+ 2*sizeof( vec3 ) );150 dev->update_attribute_offset( m_va, slot::TANGENT, base_offset + 2*sizeof( vec3 ) ); 147 151 } 148 152 m_gpu_last_frame = m_last_frame; … … 150 154 if ( m_loc_next_position != -1 && m_gpu_next_frame != m_next_frame ) 151 155 { 152 m_va->update_vertex_buffer( m_loc_next_position, m_next_frame * m_vertex_count * m_vsize ); 153 m_va->update_vertex_buffer( m_loc_next_normal, m_next_frame * m_vertex_count * m_vsize + sizeof( vec3 ) ); 154 m_va->update_vertex_buffer( m_loc_next_tangent, m_next_frame * m_vertex_count * m_vsize + 2*sizeof( vec3 ) ); 156 uint32 base_offset = m_next_frame * m_vertex_count * m_vsize; 157 dev->update_attribute_offset( m_va, (slot)m_loc_next_position, base_offset ); 158 dev->update_attribute_offset( m_va, (slot)m_loc_next_normal, base_offset + sizeof( vec3 ) ); 159 if ( m_has_tangent && m_loc_next_tangent != -1 ) 160 { 161 dev->update_attribute_offset( m_va, (slot)m_loc_next_tangent, base_offset + 2*sizeof( vec3 ) ); 162 } 155 163 m_gpu_next_frame = m_next_frame; 156 164 } … … 166 174 m_loc_next_tangent = a_program->get_attribute( "nv_next_tangent" )->get_location(); 167 175 168 vertex_buffer* vb = m_va->find_buffer( slot::POSITION);169 m_va->add_vertex_buffer( m_loc_next_position, vb, FLOAT, 3, 0, m_vsize, false );170 m_va->add_vertex_buffer( m_loc_next_normal, vb, FLOAT, 3, sizeof( vec3 ), m_vsize, false );176 device* dev = m_context->get_device(); 177 dev->add_vertex_buffer( m_va, (slot)m_loc_next_position, m_pbuffer, FLOAT, 3, 0, m_vsize, false ); 178 dev->add_vertex_buffer( m_va, (slot)m_loc_next_normal, m_pbuffer, FLOAT, 3, sizeof( vec3 ), m_vsize, false ); 171 179 if ( m_has_tangent ) 172 m_va->add_vertex_buffer( m_loc_next_tangent, vb, FLOAT, 4, 2*sizeof( vec3 ), m_vsize, false );180 dev->add_vertex_buffer( m_va, (slot)m_loc_next_tangent, m_pbuffer, FLOAT, 4, 2*sizeof( vec3 ), m_vsize, false ); 173 181 } 174 182 keyframed_mesh::update( a_program ); … … 176 184 177 185 nv::keyframed_mesh_cpu::keyframed_mesh_cpu( context* a_context, const mesh_data* a_data, const mesh_nodes_data* a_tag_map ) 178 : keyframed_mesh( a_ data, a_tag_map )179 , m_context( a_context ) 180 { 181 m_ va = m_context->get_device()->create_vertex_array();182 m_ vb = m_context->get_device()->create_vertex_buffer( nv::STATIC_DRAW, m_vertex_count * m_vsize, (void*)m_vchannel->data);183 m_va->add_vertex_buffers( m_vb, m_vchannel ); 184 185 nv::vertex_buffer* vb = m_context->get_device()->create_vertex_buffer( nv::STATIC_DRAW, m_vertex_count * sizeof( nv::vec2 ), (void*)m_mesh_data->get_channel<vertex_t>()->data);186 m_va->add_vertex_buffers( vb, m_mesh_data->get_channel<vertex_t>() ); 187 188 nv::index_buffer* ib = m_context->get_device()->create_index_buffer( nv::STATIC_DRAW, m_mesh_data->get_index_channel()->size(), (void*)m_mesh_data->get_index_channel()->data ); 189 m_ va->set_index_buffer(ib, m_mesh_data->get_index_channel()->desc.slots[0].etype, true );186 : keyframed_mesh( a_context, a_data, a_tag_map ) 187 { 188 m_va = m_context->get_device()->create_vertex_array(); 189 m_pbuffer = m_context->get_device()->create_buffer( VERTEX_BUFFER, STATIC_DRAW, m_vertex_count * m_vsize, (void*)m_vchannel->data ); 190 m_context->get_device()->add_vertex_buffers( m_va, m_pbuffer, m_vchannel ); 191 192 buffer vb = m_context->get_device()->create_buffer( VERTEX_BUFFER, STATIC_DRAW, m_vertex_count * sizeof( vec2 ), (void*)m_mesh_data->get_channel<vertex_t>()->data ); 193 m_context->get_device()->add_vertex_buffers( m_va, vb, m_mesh_data->get_channel<vertex_t>() ); 194 195 buffer ib = m_context->get_device()->create_buffer( INDEX_BUFFER, STATIC_DRAW, m_mesh_data->get_index_channel()->size(), (void*)m_mesh_data->get_index_channel()->data ); 196 197 m_context->get_device()->set_index_buffer( m_va, ib, m_mesh_data->get_index_channel()->desc.slots[0].etype, true ); 190 198 191 199 m_data = new uint8[ m_vertex_count * m_vsize ]; … … 224 232 } 225 233 226 m_context->update( m_ vb, m_data, 0, m_vertex_count * m_vsize );234 m_context->update( m_pbuffer, m_data, 0, m_vertex_count * m_vsize ); 227 235 } 228 236 -
trunk/src/gfx/mesh_creator.cc
r295 r302 430 430 { 431 431 mesh_raw_channel* old = m_data->m_channels[c]; 432 size_t frame_count = ( old-> is_index()? 1 : old->count / size );432 size_t frame_count = ( old->get_buffer_type() == INDEX_BUFFER ? 1 : old->count / size ); 433 433 m_data->m_channels[c] = append_channels( old, other->m_channels[c], frame_count ); 434 434 NV_ASSERT( m_data->m_channels[c], "Merge problem!" ); 435 if ( old-> is_index())435 if ( old->get_buffer_type() == INDEX_BUFFER ) 436 436 { 437 437 switch ( old->desc.slots[0].etype ) -
trunk/src/gfx/skeletal_mesh.cc
r299 r302 12 12 13 13 nv::skeletal_mesh_cpu::skeletal_mesh_cpu( context* a_context, const mesh_data* a_mesh_data, const mesh_nodes_data* bones ) 14 : skeletal_mesh() 15 , m_context( a_context ) 14 : skeletal_mesh( a_context ) 16 15 , m_data( a_mesh_data ) 17 16 { … … 27 26 m_vtx_data = a_mesh_data->get_channel_data<md5_vtx_pntiw>(); 28 27 m_indices = a_mesh_data->get_count(); 29 m_va = a_context->get_device()->create_vertex_array( a_mesh_data, nv::STREAM_DRAW ); 28 m_va = a_context->get_device()->create_vertex_array( a_mesh_data, 29 STREAM_DRAW ); 30 m_pbuffer = a_context->get_device()->find_buffer( m_va, slot::POSITION ); 30 31 } 31 32 … … 63 64 } 64 65 65 vertex_buffer* vb = m_va->find_buffer( nv::slot::POSITION ); 66 m_context->update( vb, m_pntdata.data(), 0, m_pntdata.raw_size() ); 66 m_context->update( m_pbuffer, m_pntdata.data(), 0, m_pntdata.raw_size() ); 67 67 } 68 68 } … … 80 80 skeleton[i] = m_node_data->get_node(i)->data->get_transform( frame_num ); 81 81 } 82 }83 84 85 86 nv::skeletal_mesh_cpu::~skeletal_mesh_cpu()87 {88 delete m_va;89 82 } 90 83 … … 200 193 201 194 nv::skeletal_mesh_gpu::skeletal_mesh_gpu( context* a_context, const mesh_data* a_mesh, const mesh_nodes_data* a_bone_data ) 202 : skeletal_mesh( ), m_bone_data( a_bone_data ), m_transform( nullptr )195 : skeletal_mesh( a_context ), m_bone_data( a_bone_data ), m_transform( nullptr ) 203 196 { 204 197 m_va = a_context->get_device()->create_vertex_array( a_mesh, nv::STATIC_DRAW );
Note: See TracChangeset
for help on using the changeset viewer.