2009-02-12 4 views
9

Sto tentando di disegnare del testo sullo schermo usando GLUT in 2d.Come si usa glutBitmapString() in C++ per disegnare il testo sullo schermo?

Voglio usare glutBitmapString(), qualcuno può mostrarmi un semplice esempio di cosa devi fare per impostare e utilizzare correttamente questo metodo in C++ in modo da poter disegnare una stringa arbitraria in una posizione (X, Y)?

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

sto usando Linux, e so che ho bisogno di creare un oggetto Font, anche se non so esattamente come e posso fornire con la stringa come secondo arguement. Tuttavia, come posso specificare anche la posizione x/y?

Un rapido esempio di questo mi sarebbe di grande aiuto. Se riesci a mostrarmi dal creare il carattere, a chiamare il metodo che sarebbe il migliore.

risposta

11

È necessario utilizzare glRasterPos per impostare la posizione raster prima di chiamare glutBitmapString(). Si noti che ogni chiamata a glutBitmapString() avanza nella posizione raster, quindi diverse chiamate consecutive stamperanno le stringhe una dopo l'altra. Puoi anche impostare il colore del testo usando glColor(). Il set di caratteri disponibili è elencato 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

Grazie per l'aiuto adam carattere. Inoltre, per molto tempo continuava a dirmi che glutBitmapString non era definito, e alla fine l'ho trovato chiamato "_glutBitmapString" in GL/glui.h. Qualche idea del perché? – KingNestor

+0

'glutBitmapString' è un'estensione implementata su' freeglut', non presente nel vecchio 'glut',' GL/freeglut.h' deve essere incluso invece di 'GL/glut.h' – Alex

0

aggiunta alla risposta di Adam,

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); 

Partenza https://www.opengl.org/resources/libraries/glut/spec3/node76.html per ulteriori opzioni