OpenGL - Warum glutBitmapCharacter so langsam?

thekiller

Viceinator
Hallo,

weiß jemand warum die Textausgabe mit glutBitmapCharacter() so langsam ist?
Jedes weitere mal wo ich die Funktion einsetze um Text auszugeben im OpenGL Fenster lässt die fps enorm einbrechen.
Da überschreibt bestimmt die CPU die Pixel an der entsprechenden Stelle oder?

MfG Manuel
 
Hallo Manuel,

der Name der Funktion lässt vermuten, dass sie glBitmap verwendet. Das ist aus mindestens zwei Gründen schlecht: erstens überträgt die Funktion bei jedem Aufruf das jeweilige Bitmap von der CPU zur GPU, was sehr sehr langsam ist. Außerdem erzeugt es vermutlich einen Pipeline Stall (CPU und GPU müssen sich synchronisieren). Zweitens ist glBitmap in den meisten Grafiktreibern nicht sonderlich optimiert.

Wenn du ohne viel Aufwand einen Ersatz zum Zeichnen von Text suchst, solltest du dir FTGL anschauen. Für weitere Möglichkeiten siehe http://www.opengl.org/resources/features/fontsurvey/

Übrigens ist von der Verwendung von GLUT im Allgemeinen abzuraten. Die Bibliothek wird seit 1998 nicht mehr weiterentwickelt. Alternativ könntest du das zu GLUT kompatible freeglut verwenden. Sehr beliebt ist auch SDL. SFML ist ebenso einen Blick wert, wenn du C++ verwendest. Die beiden letztgenannten bringen außerdem eigene Funktionalität zur Textdarstellung mit.

Grüße,
Matthias
 
Hallo Matthias,

ja so etwas in der Art hab ich mir schon gedacht. Muss ich mir wohl was anderes suchen.
Ich verwende sogar schon eine deiner genannten Bibos (SDL). Allerdings verwende ich die bisher nur zum Laden von Bilddateien.
So langsam wird es auch immer schwieriger den Überblick zu behalten bei meiner Engine. Die reine Engine umfasst schon 171KB, 82 Sourcefiles und die Verwendung von glew, glut, glaux und SDL...
Ich schau mir mal deine anderen genannten Bibliotheken an. Vielleicht entdecke ich ja für mich ein paar nützliche Funktionen.
Also in dem Sinne Danke =)

MfG Manuel
 
Zurück