@Override
	public void drawString(float x, float y, float scale, String string) {
		//The font we will be using
		Font font = getFont();
		if (font == null) throw new RuntimeException("No font set!");
		if (m_material == null) throw new RuntimeException("No material set");
		
		//First, push the transformation matrix
		pushModel();
		translate(x, y);
		
		char[] chars = string.toCharArray();
		for (char c : chars) {
			if (c == '\n' || c == '\t') continue;
			Glyph g = font.getGlyph(c);
			
			//Translate across the xoffset and down by the yoffset
			if (m_material.getParam(GLYPH_TEX_PARAM) == null || 
				m_material.getParam(GLYPH_TEX_PARAM).getDataType() != DataType.SAMPLER2D)
					throw new RuntimeException("Material does not contain " + GLYPH_TEX_PARAM + " as a parameter");
			
			Texture2D texture = m_textureManager.getTexture(m_gl, g.getImage());
			m_material.setTexture2D(GLYPH_TEX_PARAM, texture);
			//Material is already set...
			fillRect(g.getXOff() * scale, scale * g.getYOff(), 
						scale * g.getImage().getWidth(), 
						scale * g.getImage().getHeight());

			translate(g.getXAdvance() * scale, 0);
		}
		
		//Pop it to get back to what we had before
		popModel();
	}