D
Hi, ich habe nun folgendes Problem.
habe eine funktion, bzw mehrere, zum Ausgaben einer Font im OpenGL fenster.
das funktioniert nun auch so weit, nur ist die Farbe, der schrift, total falsch und hab ka woran das liegen kann.
ich lade die farb-werte in eine struktur, welche ich an eine funktion übergebe
cFont.GetFontTexture("Font.bmp", tex);
if(tex!=0)
{
fc.r=1.0f;
fc.g=1.0f;
fc.b=1.0f;
cFont.SetFontTexture(tex);
cFont.BuildFont(fc, 1.f);
}
void Font::BuildFont(FontColor fColor, float Scale)
{
float cx;
float cy;
GLuint loop=1;
ListBase=glGenLists(256);
if(FontTexture != 0)
{
glBindTexture(GL_TEXTURE_2D, FontTexture);
for(loop=0; loop<256; loop++)
{
cx=float(loop%16)/16.0f;
cy=float(loop/16)/16.0f;
glNewList(ListBase+loop,GL_COMPILE);
glBegin(GL_QUADS);
glColor3f(fColor.r, fColor.g, fColor.b);
glTexCoord2f(cx, 1 - cy - 0.0625f);
glVertex2f(0,0);
glTexCoord2f(cx + 0.0625f, 1 - cy - 0.0625f);
glVertex2f(16 * Scale,0);
glTexCoord2f(cx + 0.0625f, 1 - cy);
glVertex2f(16 * Scale, 16 * Scale);
glTexCoord2f(cx, 1 - cy);
glVertex2f(0, 16 * Scale);
glEnd();
glTranslated(10*Scale,0,0);
glEndList();
}
}
}
nun will ich den text ausgeben. unter diesem text liegt bereits eine andere farbe. das kann grün oder weiß sein.
void Font::ShowText(int x, int y, int set, const char *Format, ...)
{
char text[256];
va_list ap;
if(Format==NULL)
return;
va_start(ap, Format);
vsprintf_s(text, Format, ap);
va_end(ap);
if(set>1)
set=1;
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR);
glBindTexture(GL_TEXTURE_2D, FontTexture);
glDisable(GL_DEPTH_TEST);
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glOrtho(0,SCREEN_WIDTH,0,SCREEN_WIDTH,-1,1);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glTranslated(x,y,0);
glListBase(ListBase-32+(128*set));
glCallLists(strlen(text),GL_UNSIGNED_BYTE,text);
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
glEnable(GL_DEPTH_TEST);
glDisable(GL_BLEND);
glDisable(GL_TEXTURE_2D);
}
ist die funktion, welche den text ausgibt. wenn ich diesen nun in Rot möchte, wird er mir in gelb ausgegeben...was ja nun nicht so ganz das ist, was ich will
gebe ich ihn in schwarz aus, zeigt es mir garnix mehr an
schlate ich jedoch in der funktion "ShowText" das blending aus, zeigt es mir die schrift in der richtigen farbe an. leider auch die schwarze box herum, welche ja mittels blending weg soll
ich selber tippe ja auf einen fehler bei
glBlendFunc(GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR);
aber komme einfach nicht vorran