PDA

View Full Version : Help I want to use 2D Fonts, number and Text



zenki
04-28-2009, 04:07 AM
anybody help me.
I am still the new in opengl.
I want to use 2d fonts, number and text.
I have already read from the book "opengl superbible"

// testopengl.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "stdio.h"
#include "Wingdi.h"
#include "glut.h"


//////////////////////////////////////////////////////////////
// Window has changed size. Reset to match window coordinates
void ChangeSize(GLsizei w, GLsizei h)
{
GLfloat nRange = 100.0f;
GLfloat fAspect;
// Prevent a divide by zero
if(h == 0) h = 1;

fAspect = (GLfloat)w/(GLfloat)h;

// Set Viewport to window dimensions
glViewport(0, 0, w, h);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();

gluOrtho2D(0,400, 400, 0);

// Viewing transformation
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
///////////////////////////////////////////////////
// Set up. Use a Windows font to create the bitmaps

void SetupRC(HDC hDC)
{
// Set up the Font characteristics
HFONT hFont;
LOGFONT logfont;

logfont.lfHeight = -20;
logfont.lfWidth = 0;
logfont.lfEscapement = 0;
logfont.lfOrientation = 0;
logfont.lfWeight = FW_BOLD;
logfont.lfItalic = FALSE;
logfont.lfUnderline = FALSE;
logfont.lfStrikeOut = FALSE;
logfont.lfCharSet = ANSI_CHARSET;
logfont.lfOutPrecision = OUT_DEFAULT_PRECIS;
logfont.lfClipPrecision = CLIP_DEFAULT_PRECIS;
logfont.lfQuality = DEFAULT_QUALITY;
logfont.lfPitchAndFamily = DEFAULT_PITCH;
strcpy(logfont.lfFaceName,"Arial");

// Create the font and display list
hFont = CreateFontIndirect(&logfont);
SelectObject (hDC, hFont);

// Create display lists for glyphs 0 through 128
nFontList = glGenLists(128);
wglUseFontBitmaps(hDC, 0, 128, nFontList);
DeleteObject(hFont); // Donít need original font anymore

// Black Background
glClearColor(0.0f, 0.0f, 0.0f, 1.0f );
}
//////////////////////////////////////////////////
// Draw everything (just the text)
void RenderScene(void)
{
glClear(GL_COLOR_BUFFER_BIT);

// Blue 3D Text - Note color is set before the raster position
glColor3f(1.0f, 1.0f, 1.0f);
glRasterPos2i(0, 200);
glListBase(nFontList);
glCallLists (13, GL_UNSIGNED_BYTE, "OpenGL Rocks!");
}

//void main(void)
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);
glutCreateWindow("Simple");
glutDisplayFunc(RenderScene);
glutReshapeFunc(ChangeSize);
SetupRC();
glutMainLoop();
return 0;
}


but when i complie there still error? there is 275 error from wingdi.h

Error 1 error C2146: syntax error : missing ';' before identifier 'ptPosition' c:\program files\microsoft visual studio 8\vc\platformsdk\include\wingdi.h 268
Error 2 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\program files\microsoft visual studio 8\vc\platformsdk\include\wingdi.h 268
Error 3 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\program files\microsoft visual studio 8\vc\platformsdk\include\wingdi.h 268
Error 4 error C2146: syntax error : missing ';' before identifier 'ptSize' c:\program files\microsoft visual studio 8\vc\platformsdk\include\wingdi.h 269
Error 5 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\program files\microsoft visual studio 8\vc\platformsdk\include\wingdi.h 269


How i fix the error?
there another way to make number and text?

the image example what i want to make it:
photobucket (http://i530.photobucket.com/albums/dd347/zenki86/question.jpg)
http://i530.photobucket.com/albums/dd347/zenki86/question.jpg
thank u ...