Index: trunk/src/gfx/keyframed_mesh.cc
===================================================================
--- trunk/src/gfx/keyframed_mesh.cc	(revision 304)
+++ trunk/src/gfx/keyframed_mesh.cc	(revision 313)
@@ -105,5 +105,5 @@
 nv::keyframed_mesh::~keyframed_mesh()
 {
-	m_context->get_device()->release( m_va );
+	m_context->release( m_va );
 }
 
@@ -131,6 +131,6 @@
 	, m_gpu_next_frame( 0xFFFFFFFF )
 {
-	m_va      = a_context->get_device()->create_vertex_array( a_data, STATIC_DRAW );
-	m_pbuffer = a_context->get_device()->find_buffer( m_va, slot::POSITION );
+	m_va      = a_context->create_vertex_array( a_data, STATIC_DRAW );
+	m_pbuffer = a_context->find_buffer( m_va, slot::POSITION );
 }
 
@@ -140,13 +140,12 @@
 	if ( m_loc_next_position == -1 ) return;
 	animated_mesh::update( ms );
-	device* dev = m_context->get_device();
 	if ( m_gpu_last_frame != m_last_frame )
 	{
 		uint32 base_offset = m_last_frame * m_vertex_count * m_vsize; 
-		dev->update_attribute_offset( m_va, slot::POSITION, base_offset );
-		dev->update_attribute_offset( m_va, slot::NORMAL,   base_offset + sizeof( vec3 ) );
+		m_context->update_attribute_offset( m_va, slot::POSITION, base_offset );
+		m_context->update_attribute_offset( m_va, slot::NORMAL,   base_offset + sizeof( vec3 ) );
 		if ( m_has_tangent && m_loc_next_tangent != -1 )
 		{
-			dev->update_attribute_offset( m_va, slot::TANGENT, base_offset + 2*sizeof( vec3 ) );
+			m_context->update_attribute_offset( m_va, slot::TANGENT, base_offset + 2*sizeof( vec3 ) );
 		}
 		m_gpu_last_frame = m_last_frame;
@@ -155,9 +154,9 @@
 	{
 		uint32 base_offset = m_next_frame * m_vertex_count * m_vsize; 
-		dev->update_attribute_offset( m_va, (slot)m_loc_next_position, base_offset );
-		dev->update_attribute_offset( m_va, (slot)m_loc_next_normal, base_offset + sizeof( vec3 ) );
+		m_context->update_attribute_offset( m_va, (slot)m_loc_next_position, base_offset );
+		m_context->update_attribute_offset( m_va, (slot)m_loc_next_normal, base_offset + sizeof( vec3 ) );
 		if ( m_has_tangent && m_loc_next_tangent != -1 )
 		{
-			dev->update_attribute_offset( m_va, (slot)m_loc_next_tangent, base_offset + 2*sizeof( vec3 ) );
+			m_context->update_attribute_offset( m_va, (slot)m_loc_next_tangent, base_offset + 2*sizeof( vec3 ) );
 		}
 		m_gpu_next_frame = m_next_frame;
@@ -175,8 +174,8 @@
 			m_loc_next_tangent  = dev->get_attribute_location( a_program, "nv_next_tangent" );
 
-		dev->add_vertex_buffer( m_va, (slot)m_loc_next_position, m_pbuffer, FLOAT, 3, 0, m_vsize, false );
-		dev->add_vertex_buffer( m_va, (slot)m_loc_next_normal,   m_pbuffer, FLOAT, 3, sizeof( vec3 ), m_vsize, false );
+		m_context->add_vertex_buffer( m_va, (slot)m_loc_next_position, m_pbuffer, FLOAT, 3, 0, m_vsize, false );
+		m_context->add_vertex_buffer( m_va, (slot)m_loc_next_normal,   m_pbuffer, FLOAT, 3, sizeof( vec3 ), m_vsize, false );
 		if ( m_has_tangent )
-			dev->add_vertex_buffer( m_va, (slot)m_loc_next_tangent, m_pbuffer, FLOAT, 4, 2*sizeof( vec3 ), m_vsize, false );
+			m_context->add_vertex_buffer( m_va, (slot)m_loc_next_tangent, m_pbuffer, FLOAT, 4, 2*sizeof( vec3 ), m_vsize, false );
 	}
 	keyframed_mesh::update( a_program );
@@ -186,14 +185,14 @@
 	: keyframed_mesh( a_context, a_data, a_tag_map )
 {
-	m_va      = m_context->get_device()->create_vertex_array();
+	m_va      = m_context->create_vertex_array();
 	m_pbuffer = m_context->get_device()->create_buffer( VERTEX_BUFFER, STATIC_DRAW, m_vertex_count * m_vsize, (void*)m_vchannel->data );
-	m_context->get_device()->add_vertex_buffers( m_va, m_pbuffer, m_vchannel );
+	m_context->add_vertex_buffers( m_va, m_pbuffer, m_vchannel );
 
 	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 );
-	m_context->get_device()->add_vertex_buffers( m_va, vb, m_mesh_data->get_channel<vertex_t>() );
+	m_context->add_vertex_buffers( m_va, vb, m_mesh_data->get_channel<vertex_t>() );
 
 	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 );
 
-	m_context->get_device()->set_index_buffer( m_va, ib, m_mesh_data->get_index_channel()->desc.slots[0].etype, true );
+	m_context->set_index_buffer( m_va, ib, m_mesh_data->get_index_channel()->desc.slots[0].etype, true );
 
 	m_data = new uint8[ m_vertex_count * m_vsize ];
