2009-02-12 13 views
9

Ich versuche Text mit GLUT in 2d auf den Bildschirm zu zeichnen.Wie verwende ich glutBitmapString() in C++, um Text auf dem Bildschirm zu zeichnen?

Ich möchte glutBitmapString() verwenden, kann jemand mir ein einfaches Beispiel zeigen, was Sie tun müssen, um diese Methode in C++ einzurichten und richtig zu verwenden, damit ich eine beliebige Zeichenfolge an einer (X, Y) Position zeichnen kann?

glutBitmapString(void *font, const unsigned char *string); 

Ich verwende Linux, und ich weiß, ich brauche ein Font-Objekt zu erstellen, obwohl ich nicht sicher bin, genau, wie ich es mit der Zeichenfolge als zweites Argument liefern kann. Wie gebe ich aber auch die x/y-Position an?

Ein schnelles Beispiel würde mir sehr helfen. Wenn Sie mir zeigen können, die Schriftart zu erstellen, rufen Sie die Methode auf, die am besten wäre.

Antwort

11

Sie müssen glRasterPos verwenden, um die Rasterposition vor dem Aufruf glutBitmapString() festzulegen. Beachten Sie, dass jeder Aufruf von glutBitmapString() die Rasterposition vorrückt, sodass mehrere aufeinander folgende Aufrufe die Zeichenfolgen nacheinander ausgeben. Sie können die Textfarbe auch mithilfe von glColor() festlegen. Die verfügbaren Schriftarten werden aufgelistet here.

// Draw blue text at screen coordinates (100, 120), where (0, 0) is the top-left of the 
// screen in an 18-point Helvetica font 
glRasterPos2i(100, 120); 
glColor4f(0.0f, 0.0f, 1.0f, 1.0f); 
glutBitmapString(GLUT_BITMAP_HELVETICA_18, "text to render"); 
+2

Danke für die Hilfe adam. Außerdem hat es mir lange Zeit gesagt, dass glutBitmapString nicht definiert war, und ich fand es schließlich als "_glutBitmapString" in GL/glui.h. Irgendeine Idee warum? – KingNestor

+0

'glutBitmapString' ist eine Erweiterung, die auf' freeglut' implementiert ist, die in der alten 'glut' nicht vorhanden ist,' GL/freeglut.h' muss anstelle von 'GL/glut.h' enthalten sein – Alex

0

Adams Antwort, Hinzufügen von

glColor4f(0.0f, 0.0f, 1.0f, 1.0f); //RGBA values of text color 
glRasterPos2i(100, 120);   //Top left corner of text 
const unsigned char* t = reinterpret_cast<const unsigned char *>("text to render"); 
// Since 2nd argument of glutBitmapString must be const unsigned char* 
glutBitmapString(GLUT_BITMAP_HELVETICA_18,t); 

Check out https://www.opengl.org/resources/libraries/glut/spec3/node76.html für mehr Schriftoptionen

Verwandte Themen