Index: trunk/src/gl/gl_context.cc
===================================================================
--- trunk/src/gl/gl_context.cc	(revision 44)
+++ trunk/src/gl/gl_context.cc	(revision 45)
@@ -353,2 +353,12 @@
 	force_apply_render_state( m_render_state );
 }
+
+void gl_context::draw( primitive prim, const render_state& rs, program* p, vertex_array* va, int count )
+{
+	apply_render_state( rs );
+	p->bind();
+	va->bind();
+	glDrawArrays( primitive_to_enum(prim), 0, count);
+	va->unbind();
+	p->unbind();
+}
Index: trunk/src/gl/gl_device.cc
===================================================================
--- trunk/src/gl/gl_device.cc	(revision 44)
+++ trunk/src/gl/gl_device.cc	(revision 45)
@@ -8,4 +8,5 @@
 #include "nv/gl/gl_program.hh"
 #include "nv/gl/gl_vertex_buffer.hh"
+#include "nv/gl/gl_texture2d.hh"
 #include "nv/logging.hh"
 #include "nv/lib/sdl12.hh"
@@ -66,7 +67,11 @@
 }
 
+texture2d* gl_device::create_texture2d( ivec2 size, texture2d::format aformat, texture2d::datatype adatatype, texture2d_sampler sampler, void* data /*= nullptr */ )
+{
+	return new gl_texture2d( size, aformat, adatatype, sampler, data );
+}
+
 gl_device::~gl_device()
 {
 	SDL_Quit();
 }
-
Index: trunk/src/gl/gl_enum.cc
===================================================================
--- trunk/src/gl/gl_enum.cc	(revision 44)
+++ trunk/src/gl/gl_enum.cc	(revision 45)
@@ -181,4 +181,18 @@
 }
 
+unsigned int nv::primitive_to_enum( primitive p )
+{
+	switch( p )
+	{
+	case POINTS         : return GL_POINTS;
+	case LINES          : return GL_LINES;
+	case LINE_LOOP      : return GL_LINE_LOOP;
+	case LINE_STRIP     : return GL_LINE_STRIP;
+	case TRIANGLES      : return GL_TRIANGLES;
+	case TRIANGLE_STRIP : return GL_TRIANGLE_STRIP;
+	case TRIANGLE_FAN   : return GL_TRIANGLE_FAN;
+	default : return 0; // TODO: throw!
+	}
+}
 
 unsigned int nv::type_to_gl_enum( type type )
Index: trunk/src/gl/texture_font.cc
===================================================================
--- trunk/src/gl/texture_font.cc	(revision 44)
+++ trunk/src/gl/texture_font.cc	(revision 45)
@@ -55,8 +55,8 @@
 
     FT_Size_Metrics metrics = ((FT_Face)(m_rface))->size->metrics; 
-    m_ascender = (metrics.ascender >> 6) / 100.0;
-    m_descender = (metrics.descender >> 6) / 100.0;
-    m_height = (metrics.height >> 6) / 100.0;
-    m_linegap = m_height - m_ascender + m_descender; 
+    m_ascender  = (float)(metrics.ascender >> 6) / 100.0f;
+    m_descender = (float)(metrics.descender >> 6) / 100.0f;
+    m_height    = (float)(metrics.height >> 6) / 100.0f;
+    m_linegap   = m_height - m_ascender + m_descender; 
 }
 
