Index: trunk/src/gl/gl_vertex_buffer.cc
===================================================================
--- trunk/src/gl/gl_vertex_buffer.cc	(revision 99)
+++ trunk/src/gl/gl_vertex_buffer.cc	(revision 100)
@@ -13,22 +13,12 @@
 	: vertex_buffer( hint, size ), m_name()
 {
-	if (data)
-	{
-		assign( data );
-	}
+	bind();
+	glBufferData( GL_ARRAY_BUFFER, m_size, data, buffer_hint_to_enum( m_hint ) );
+	unbind();
 }
 
-void gl_vertex_buffer::assign( void* data )
+void gl_vertex_buffer::update( void* data, int offset, int size )
 {
-	glBindBuffer( GL_ARRAY_BUFFER, m_name.get_value() );
-	glBufferData( GL_ARRAY_BUFFER, m_size, data, buffer_hint_to_enum( m_hint ) );
-	glBindBuffer( GL_ARRAY_BUFFER, 0);
-}
-
-void gl_vertex_buffer::assign( void* data, int offset, int size )
-{
-	glBindBuffer( GL_ARRAY_BUFFER, m_name.get_value() );
 	glBufferSubData( GL_ARRAY_BUFFER, offset, size, data );
-	glBindBuffer( GL_ARRAY_BUFFER, 0);
 }
 
@@ -52,22 +42,12 @@
 	: index_buffer( hint, size ), m_name()
 {
-	if (data)
-	{
-		assign( data );
-	}
+	bind();
+	glBufferData( GL_ELEMENT_ARRAY_BUFFER, m_size, data, buffer_hint_to_enum( m_hint ) );
+	unbind();
 }
 
-void gl_index_buffer::assign( void* data )
+void gl_index_buffer::update( void* data, int offset, int size )
 {
-	glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, m_name.get_value() );
-	glBufferData( GL_ELEMENT_ARRAY_BUFFER, m_size, data, buffer_hint_to_enum( m_hint ) );
-	glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, 0);
-}
-
-void gl_index_buffer::assign( void* data, int offset, int size )
-{
-	glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, m_name.get_value() );
 	glBufferSubData( GL_ELEMENT_ARRAY_BUFFER, offset, size, data );
-	glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, 0);
 }
 
