Index: trunk/tests/md2_test/md2_test.cc
===================================================================
--- trunk/tests/md2_test/md2_test.cc	(revision 224)
+++ trunk/tests/md2_test/md2_test.cc	(revision 231)
@@ -58,17 +58,9 @@
 	}
 
+	nv::mesh_interface* get_mesh() { return m_mesh; }
+
 	size_t get_max_frames()
 	{
 		return m_mesh->get_max_frames();
-	}
-
-	void draw( nv::render_state& rstate, const glm::mat4& m, const glm::mat4& v, const glm::mat4& p )
-	{
-		NV_PROFILE( "mesh-draw" );
-		glm::mat4 mv = v * m;
-		m_mesh->get_program()->set_opt_uniform( "nv_m_modelview", mv );
-		m_mesh->get_program()->set_opt_uniform( "nv_m_normal", glm::transpose(glm::inverse(glm::mat3(mv))) );
-		m_mesh->get_program()->set_uniform( "matrix_mvp", p * mv );
-		m_mesh->draw( rstate );
 	}
 
@@ -80,6 +72,6 @@
 
 private:
-	nv::mesh_data*           m_mesh_data;
-	nv::keyframed_mesh_gpu*  m_mesh;
+	nv::mesh_data*       m_mesh_data;
+	nv::keyframed_mesh*  m_mesh;
 };
 
@@ -106,5 +98,5 @@
 	NV_PROFILE( "app_construct" );
 	m_device = new nv::gl_device();
-	m_window = m_device->create_window( 800, 600 );
+	m_window = m_device->create_window( 800, 600, false );
 
 	nv::sampler sampler( nv::sampler::LINEAR, nv::sampler::REPEAT );
@@ -178,5 +170,10 @@
 			NV_PROFILE( "draw" );
 			glm::mat4 model      = glm::mat4(1.0f);
-			m_mesh->draw( m_render_state, model, view, projection );
+			glm::mat4 mv = view * model;
+			m_program->set_opt_uniform( "nv_m_modelview", mv );
+			m_program->set_opt_uniform( "nv_m_normal", glm::transpose(glm::inverse(glm::mat3(mv))) );
+			m_program->set_uniform( "matrix_mvp", projection * mv );
+			m_mesh->get_mesh()->update( m_program );
+			m_window->get_context()->draw( m_render_state, m_program, m_mesh->get_mesh() );
 		}
 
