You can do it in 6 with a triangle strip.
Here's the code from ps2yabasic for doing Windows fonts.
#include <windows.h>
#include <gl\gl.h>
GLuint m_iFontBase;
void BuildFont(HDC m_hDC)
{
m_iFontBase = glGenLists(255);
font = CreateFont(
17, // h
11, // w
0,
0,
FW_BOLD,
FALSE,
FALSE,
FALSE,
ANSI_CHARSET,
OUT_TT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
FF_DONTCARE | FIXED_PITCH,
"Courier New"
);
orig_font=SelectObject(m_hDC, font);
wglUseFontBitmaps(m_hDC, 0, 255, m_iFontBase);
return;
}
void PS2_draw_Text(int RGB, int x, int y, const char *pText)
{
glRasterPos2i(x, y);
glPushAttrib(GL_LIST_BIT);
glListBase(m_iFontBase);
glCallLists(strlen(pText), GL_UNSIGNED_BYTE, pText);
glPopAttrib();
}
void DestroyFont(void)
{
glDeleteLists(m_iFontBase, 255);
}
I thnk that's it, I just snipped it from a load of surrounding code.
You could also use glDrawImage() which can be very slow, depending on your card/driver or you could use a texture with a font drawn in it and use quads to draw the letters - but as you say, you need to manage all that yourself. It's defintiely possible to render-to-texture using OpenGL too.
Jim