Freigeben über


Zeichnen von Text in einem Double-Buffered OpenGL-Fenster

Sie zeichnen Text in einem doppelt gepufferten OpenGL-Fenster, indem Sie Anzeigelisten für ausgewählte Zeichen in einer Schriftart erstellen und dann die entsprechende Anzeigeliste für jedes Zeichen ausführen, das Sie zeichnen möchten. Im folgenden Codebeispiel wird ein Renderingkontext erstellt, ein rotes Dreieck gezeichnet und dann mit Text beschriftt. Für diesen Beispielcode wird davon ausgegangen, dass ein Gerätekontext mit einem Schriftart- und Pixelformat vorhanden ist.

// create an OpenGL rendering context  
hglrc = wglCreateContext(hdc); 
 
// make it this thread's current rendering context  
wglMakeCurrent(hdc, hglrc); 
 
// make the color a deep blue hue  
glClearColor(0.0F, 0.0F, 0.4F, 1.0F); 
 
// make the shading smooth 
glShadeModel(GL_SMOOTH); 
 
// clear the color buffers  
glClear(GL_COLOR_BUFFER_BIT); 
 
// specify a red triangle  
glBegin(GL_TRIANGLES); 
    glColor3f(1.0F, 0.0F, 0.0F); 
    glVertex2f(10.0F, 10.0F); 
    glVertex2f(250.0F, 50.0F); 
    glVertex2f(105.0F, 280.0F); 
glEnd(); 
 
// create bitmaps for the device context font's first 256 glyphs  
wglUseFontBitmaps(hdc, 0, 256, 1000); 
 
// move bottom left, southwest of the red triangle  
glRasterPos2f(30.0F, 300.0F); 
 
// set up for a string-drawing display list call  
glListBase(1000); 
 
// draw a string using font display lists  
glCallLists(12, GL_UNSIGNED_BYTE, "Red Triangle"); 
 
// get all those commands to execute  
glFlush(); 
 
// delete our 256 glyph display lists  
glDeleteLists(1000, 256) ; 
 
// make the rendering context not current  
wglMakeCurrent (NULL, NULL) ; 
 
// release the device context  
ReleaseDC(hdc) ; 
 
// delete the rendering context  
wglDeleteContext(hglrc);