Fontengine
Hi!
I just coded a font engine. but when i draw something with it it is always brown. I tried it with glColor3f() but then everything else become the same color.
uhhhhhh... you are being a bit vague... maybe you could post some code so we can examine it?
''Qui habet aures audiendi audiat'' - Me
A link to the website of my 3D engine will follow as soon as I have something concrete to show... Which will be soon.
''Qui habet aures audiendi audiat'' - Me

A link to the website of my 3D engine will follow as soon as I have something concrete to show... Which will be soon.
Thats my font engine:
//Font-Engine
ui FontListID=0;
HFONT HoldFont;
#define MAX_CHARS 256
#define FONT_HEIGHT 32
ui CreateOpenGLFont(LPSTR strFontName, int height)
{
ui FontListId=0;
HFONT hFont;
FontListId=glGenLists(MAX_CHARS);
hFont=CreateFont(height,
0,
0,
0,
FW_BOLD,
FALSE,
FALSE,
FALSE,
ANSI_CHARSET,
OUT_TT_PRECIS,
CLIP_DEFAULT_PRECIS,
ANTIALIASED_QUALITY,
FF_DONTCARE|DEFAULT_PITCH,
strFontName);
HoldFont=(HFONT)SelectObject(hDC,hFont);
wglUseFontBitmaps(hDC,0,MAX_CHARS-1,FontListId);
return FontListId;
}
void PositionText(int x,int y)
{
glPushAttrib(GL_TRANSFORM_BIT|GL_VIEWPORT_BIT);
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
y=SCREEN_HEIGHT-FONT_HEIGHT-y;
glViewport(x-1,y-1,0,0);
glRasterPos4f(0,0,0,1);
glPopMatrix();
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glPopAttrib();
}
void glDrawText(int x, int y, const char*strString,...)
{
char strText[256];
va_list argumentPtr;
if(strString==NULL)
return;
va_start(argumentPtr,strString);
vsprintf(strText,strString,argumentPtr);
va_end(argumentPtr);
PositionText( x, y);
glPushAttrib(GL_LIST_BIT);
glListBase(FontListID);
glCallLists(strlen(strText),GL_UNSIGNED_BYTE,strText);
glPopAttrib();
}
void DestroyFont()
{
glDeleteLists(FontListID,MAX_CHARS);
SelectObject(hDC,HoldFont);
}
Thats my function to draw:
int DrawGLScene(GLvoid)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glColor3f(0,0,1);
glDrawText(0,25,"Hi");
glColor3f(1,1,1);
glTranslatef(0.0f,0.0f,depth);
glRotatef(xrot,1.0f,0.0f,0.0f);
glRotatef(yrot,0.0f,1.0f,0.0f);
glBindTexture(GL_TEXTURE_2D,texture[filter]);
glBegin(GL_QUADS);
glNormal3f(0.0f,0.0f,1.0f);
glTexCoord2f(0.0f,0.0f); glVertex3f(-1.0f,-1.0f,1.0f);
glTexCoord2f(1.0f,0.0f); glVertex3f(1.0f,-1.0f,1.0f);
glTexCoord2f(1.0f,1.0f); glVertex3f(1.0f,1.0f,1.0f);
glTexCoord2f(0.0f,1.0f); glVertex3f(-1.0f,1.0f,1.0f);
glNormal3f(0.0f,0.0f,-1.0f);
glTexCoord2f(1.0f,0.0f); glVertex3f(-1.0f,-1.0f,-1.0f);
glTexCoord2f(1.0f,1.0f); glVertex3f(-1.0f,1.0f,-1.0f);
glTexCoord2f(0.0f,1.0f); glVertex3f(1.0f,1.0f,-1.0f);
glTexCoord2f(0.0f,0.0f); glVertex3f(1.0f,-1.0f,-1.0f);
glNormal3f(0.0f,1.0f,0.0f);
glTexCoord2f(0.0f,1.0f); glVertex3f(-1.0f,1.0f,-1.0f);
glTexCoord2f(0.0f,0.0f); glVertex3f(-1.0f,1.0f,1.0f);
glTexCoord2f(1.0f,0.0f); glVertex3f(1.0f,1.0f,1.0f);
glTexCoord2f(1.0f,1.0f); glVertex3f(1.0f,1.0f,-1.0f);
glNormal3f(0.0f,-1.0f,0.0f);
glTexCoord2f(1.0f,1.0f); glVertex3f(-1.0f,-1.0f,-1.0f);
glTexCoord2f(0.0f,1.0f); glVertex3f(1.0f,-1.0f,-1.0f);
glTexCoord2f(0.0f,0.0f); glVertex3f(1.0f,-1.0f,1.0f);
glTexCoord2f(1.0f,0.0f); glVertex3f(-1.0f,-1.0f,1.0f);
glNormal3f(1.0f,0.0f,0.0f);
glTexCoord2f(1.0f,0.0f); glVertex3f(1.0f,-1.0f,-1.0f);
glTexCoord2f(1.0f,1.0f); glVertex3f(1.0f,1.0f,-1.0f);
glTexCoord2f(0.0f,1.0f); glVertex3f(1.0f,1.0f,1.0f);
glTexCoord2f(0.0f,0.0f); glVertex3f(1.0f,-1.0f,1.0f);
glNormal3f(-1.0f,0.0f,0.0f);
glTexCoord2f(0.0f,0.0f); glVertex3f(-1.0f,-1.0f,-1.0f);
glTexCoord2f(1.0f,0.0f); glVertex3f(-1.0f,-1.0f,1.0f);
glTexCoord2f(1.0f,1.0f); glVertex3f(-1.0f,1.0f,1.0f);
glTexCoord2f(0.0f,1.0f); glVertex3f(-1.0f,1.0f,-1.0f);
glEnd();
xrot+=xspeed;
yrot+=yspeed;
CalculateFps();
return TRUE;
}
//Font-Engine
ui FontListID=0;
HFONT HoldFont;
#define MAX_CHARS 256
#define FONT_HEIGHT 32
ui CreateOpenGLFont(LPSTR strFontName, int height)
{
ui FontListId=0;
HFONT hFont;
FontListId=glGenLists(MAX_CHARS);
hFont=CreateFont(height,
0,
0,
0,
FW_BOLD,
FALSE,
FALSE,
FALSE,
ANSI_CHARSET,
OUT_TT_PRECIS,
CLIP_DEFAULT_PRECIS,
ANTIALIASED_QUALITY,
FF_DONTCARE|DEFAULT_PITCH,
strFontName);
HoldFont=(HFONT)SelectObject(hDC,hFont);
wglUseFontBitmaps(hDC,0,MAX_CHARS-1,FontListId);
return FontListId;
}
void PositionText(int x,int y)
{
glPushAttrib(GL_TRANSFORM_BIT|GL_VIEWPORT_BIT);
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
y=SCREEN_HEIGHT-FONT_HEIGHT-y;
glViewport(x-1,y-1,0,0);
glRasterPos4f(0,0,0,1);
glPopMatrix();
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glPopAttrib();
}
void glDrawText(int x, int y, const char*strString,...)
{
char strText[256];
va_list argumentPtr;
if(strString==NULL)
return;
va_start(argumentPtr,strString);
vsprintf(strText,strString,argumentPtr);
va_end(argumentPtr);
PositionText( x, y);
glPushAttrib(GL_LIST_BIT);
glListBase(FontListID);
glCallLists(strlen(strText),GL_UNSIGNED_BYTE,strText);
glPopAttrib();
}
void DestroyFont()
{
glDeleteLists(FontListID,MAX_CHARS);
SelectObject(hDC,HoldFont);
}
Thats my function to draw:
int DrawGLScene(GLvoid)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glColor3f(0,0,1);
glDrawText(0,25,"Hi");
glColor3f(1,1,1);
glTranslatef(0.0f,0.0f,depth);
glRotatef(xrot,1.0f,0.0f,0.0f);
glRotatef(yrot,0.0f,1.0f,0.0f);
glBindTexture(GL_TEXTURE_2D,texture[filter]);
glBegin(GL_QUADS);
glNormal3f(0.0f,0.0f,1.0f);
glTexCoord2f(0.0f,0.0f); glVertex3f(-1.0f,-1.0f,1.0f);
glTexCoord2f(1.0f,0.0f); glVertex3f(1.0f,-1.0f,1.0f);
glTexCoord2f(1.0f,1.0f); glVertex3f(1.0f,1.0f,1.0f);
glTexCoord2f(0.0f,1.0f); glVertex3f(-1.0f,1.0f,1.0f);
glNormal3f(0.0f,0.0f,-1.0f);
glTexCoord2f(1.0f,0.0f); glVertex3f(-1.0f,-1.0f,-1.0f);
glTexCoord2f(1.0f,1.0f); glVertex3f(-1.0f,1.0f,-1.0f);
glTexCoord2f(0.0f,1.0f); glVertex3f(1.0f,1.0f,-1.0f);
glTexCoord2f(0.0f,0.0f); glVertex3f(1.0f,-1.0f,-1.0f);
glNormal3f(0.0f,1.0f,0.0f);
glTexCoord2f(0.0f,1.0f); glVertex3f(-1.0f,1.0f,-1.0f);
glTexCoord2f(0.0f,0.0f); glVertex3f(-1.0f,1.0f,1.0f);
glTexCoord2f(1.0f,0.0f); glVertex3f(1.0f,1.0f,1.0f);
glTexCoord2f(1.0f,1.0f); glVertex3f(1.0f,1.0f,-1.0f);
glNormal3f(0.0f,-1.0f,0.0f);
glTexCoord2f(1.0f,1.0f); glVertex3f(-1.0f,-1.0f,-1.0f);
glTexCoord2f(0.0f,1.0f); glVertex3f(1.0f,-1.0f,-1.0f);
glTexCoord2f(0.0f,0.0f); glVertex3f(1.0f,-1.0f,1.0f);
glTexCoord2f(1.0f,0.0f); glVertex3f(-1.0f,-1.0f,1.0f);
glNormal3f(1.0f,0.0f,0.0f);
glTexCoord2f(1.0f,0.0f); glVertex3f(1.0f,-1.0f,-1.0f);
glTexCoord2f(1.0f,1.0f); glVertex3f(1.0f,1.0f,-1.0f);
glTexCoord2f(0.0f,1.0f); glVertex3f(1.0f,1.0f,1.0f);
glTexCoord2f(0.0f,0.0f); glVertex3f(1.0f,-1.0f,1.0f);
glNormal3f(-1.0f,0.0f,0.0f);
glTexCoord2f(0.0f,0.0f); glVertex3f(-1.0f,-1.0f,-1.0f);
glTexCoord2f(1.0f,0.0f); glVertex3f(-1.0f,-1.0f,1.0f);
glTexCoord2f(1.0f,1.0f); glVertex3f(-1.0f,1.0f,1.0f);
glTexCoord2f(0.0f,1.0f); glVertex3f(-1.0f,1.0f,-1.0f);
glEnd();
xrot+=xspeed;
yrot+=yspeed;
CalculateFps();
return TRUE;
}
Everything seems OK but I am pretty sure you need to have this after wglUseFontBitmaps
SelectObject(hDC,HoldFont);
DeleteObject(hFont);
And remove the SelectObject() line from the DestroyFont() function
SelectObject(hDC,HoldFont);
DeleteObject(hFont);
And remove the SelectObject() line from the DestroyFont() function
Disable GL_TEXTURE_2D just before you draw the text, and re-enable it after. (the texture you''re binding may be the cause for the brown colour)
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement
Recommended Tutorials
Advertisement