Самый простой способ - это загрузить карту шрифтов из изображения, например, сгенерированных конструктором растровых шрифтов (я знаю, что это окна, но я не могу найти их для linux), например: 1003 *
Примером является gif 256x256, хотя вы можете преобразовать его в png / tga / bmp. Это полный ASCII сопоставленный Gird, 16x16 символов. Загрузите текстуру и используйте glTexCoord2f, чтобы выстроить ее в соответствие с вашим квадроциклом, и вам будет хорошо.
Вот пример использования растрового изображения из приведенного выше:
unsigned texture = 0;
void LoadTexture()
{
// load 24-bit bitmap texture
unsigned offset, width, height, size;
char *buffer;
FILE *file = fopen("text.bmp", "rb");
if (file == NULL)
return;
fseek(file, 10, SEEK_SET);
fread(&offset, 4, 1, file);
fseek(file, 18, SEEK_SET);
fread(&width, 1, 4, file);
fread(&height, 1, 4, file);
size = width * height * 3;
buffer = new char[size];
fseek(file, offset, SEEK_SET);
fread(buffer, 1, size, file);
glEnable(GL_TEXTURE_2D);
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, buffer);
fclose(file);
printf("Loaded\n");
}
void DrawCharacter(char c)
{
int column = c % 16, row = c / 16;
float x, y, inc = 1.f / 16.f;
x = column * inc;
y = 1 - (row * inc) - inc;
glBegin(GL_QUADS);
glTexCoord2f( x, y); glVertex3f( 0.f, 0.f, 0.f);
glTexCoord2f( x, y + inc); glVertex3f( 0.f, 1.f, 0.f);
glTexCoord2f( x + inc, y + inc); glVertex3f( 1.f, 1.f, 0.f);
glTexCoord2f( x + inc, y); glVertex3f( 1.f, 0.f, 0.f);
glEnd();
}