Index: trunk/src/gui/gui_gfx_renderer.cc
===================================================================
--- trunk/src/gui/gui_gfx_renderer.cc	(revision 487)
+++ trunk/src/gui/gui_gfx_renderer.cc	(revision 491)
@@ -12,5 +12,5 @@
 
 static const char *nv_gui_vertex_shader = R"(
-#version 130
+#version 330
 in vec2 nv_position;
 in vec2 nv_texcoord;
@@ -28,12 +28,14 @@
 
 static const char *nv_gui_fragment_shader = R"(
-#version 130
+#version 330
 in vec4 v_color;
 in vec2 v_texcoord;
 uniform sampler2D nv_t_diffuse;
+out vec4 o_frag_color;
+
 void main(void)
 {
 	vec4 tex_color = texture2D( nv_t_diffuse, v_texcoord );
-	gl_FragColor   = v_color * tex_color;
+	o_frag_color   = v_color * tex_color;
 }
 )";
@@ -158,7 +160,8 @@
 	m_scene_state.get_camera().set_ortho( 0.0f, float( m_window->get_width() ), float( m_window->get_height() ), 0.0f );
 
-	sr->varray = m_window->get_context()->create_vertex_array();
 	buffer vb = sr->buffer.get_buffer();
-	m_window->get_context()->add_vertex_buffers< vertex >( sr->varray, vb, false );
+	vertex_array_desc va_desc;
+	va_desc.add_vertex_buffers< vertex >( vb, true );
+	sr->varray = m_window->get_context()->create_vertex_array( va_desc );
 
 	nv::sampler sampler( nv::sampler::LINEAR, nv::sampler::CLAMP_TO_EDGE );
@@ -377,6 +380,6 @@
 	if ( sr->buffer.commit() )
 	{
-		buffer vb = sr->buffer.get_buffer();
-		m_context->replace_vertex_buffer( sr->varray, vb, false );
+// 		buffer vb = sr->buffer.get_buffer();
+// 		m_context->replace_vertex_buffer( sr->varray, vb, false );
 	}
 	m_context->bind( sr->tex, TEX_DIFFUSE );
@@ -401,2 +404,7 @@
 	m_style.load_flags( e );
 }
+
+void nv::gui::gfx_renderer::set_shader( program p )
+{
+	static_cast<screen_render_data*>( m_render_data )->shader = p;
+}
