В этом ответе предполагается, что вы используете устаревший OpenGL:
Вы можете установить текстуру для рисования непосредственно в цвете переднего плана, например:
// Preparation
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
{
glDisable(GL_TEXTURE_2D);
glColor3d(bgR,bgG,bgB); // Set background color
/* Draw background quad here */
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, yourFontTexture);
glColor3d(fgR,fgG,fgB); // Set foreground color
/* Draw texture quads here*/
}
Для этого необходимо, чтобы текстура шрифта была белой на прозрачном фоне. Цвета текстуры при рисовании умножаются на активный цвет.
Обратите внимание, что с помощью этого метода вы можете рисовать цветной текст поверх всего, что вам нравится, и вам не нужно явно рисовать прямоугольник фона, если фон уже имеет нужный цвет.