public void drawString(String text, int x, int y, int size, int spacing) {
		glEnable(GL_BLEND);
		glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
		glActiveTexture(GL_TEXTURE3);
		shader.bind();
		float scale = size / 20.0f;
		int xx = x;
		int yy = y;
		for (int i = 0; i < text.length(); i++) {
			float xOffset = xx / scale;
			float yOffset = yy / scale;
			int currentChar = text.charAt(i);
			int index = chars.indexOf(currentChar);
			if (index >= 0 && currentChar != ' ') {
				if (currentChar == 'p' || currentChar == 'g' || currentChar == 'q' || currentChar == 'y' || currentChar == ',') yOffset += 40;
				glPushMatrix();
				glLoadIdentity();
				glScalef(scale, scale, 0);
				glTranslatef(xOffset, yOffset, 0);
				glBindTexture(GL_TEXTURE_2D, texIDs[index]);

				glBindVertexArray(vao);
				glEnableVertexAttribArray(0);
				glEnableVertexAttribArray(1);
				{
					glTranslatef(x, y, 0);
					glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, vio);
					glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_BYTE, 0);
					glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
				}
				glDisableVertexAttribArray(1);
				glDisableVertexAttribArray(0);
				glBindVertexArray(0);

				glBindTexture(GL_TEXTURE_2D, 0);
				glPopMatrix();
			}
			xx += (this.size + spacing) * scale;
		}
		shader.release();
		glDisable(GL_BLEND);
	}