Ich arbeite mit einem Legacy-Stück von Code in einigen Sachen für die Arbeit, die glBitmap()-Aufrufe verwendet, um Bitmap-Symbole zu zeichnen. Mein Problem ist, dass es ziemlich langsam ist, sobald Sie auf Zeichnung über 1000 Symbole auf einmal erhalten. Es verlangsamt sich auf etwa eine 1- bis 2-Sekunden-Aktualisierungsrate, und ich möchte sehen, ob ich es schneller als das machen kann.
Zunächst sollte ich wohl beschreiben, wie der aktuelle Code funktioniert. Die Bitmap-Symbole sind 32x32 Bilder mit einem Bit pro Pixel, die in den Speicher geladen wurden. Für jedes Symbol, das gezeichnet wird, macht der Code:
glNewList glRasterPos2f glBitmap glEndList
und dann wird glCallList() für die Anzeigeliste aufgerufen. Ich weiß, dass der wiederholte Aufruf von glCallList() für jedes Symbol wirklich langsam sein kann, aber einige überlagerte Architektur im Code macht das Ändern ziemlich schwierig.
Gibt es noch andere Möglichkeiten, wie ich das beschleunigen kann, ohne das Ganze neu zu gestalten? Ich habe so ziemlich freie Hand, so etwas zu tun, aber ich muss in der Lage sein, es gegenüber dem Management zu rechtfertigen. Wäre ein Wechsel von glBitmap() zu etwas wie texture-mapped quads irgendwie schneller? Kann ich mehrere Aufrufe von glBitmap() in eine einzige Anzeigeliste packen und glCallList() nur einmal für alle Icons aufrufen?
Ich habe in der Vergangenheit ein wenig GL-Zeug gemacht, aber es ist schon eine Weile her. Ich bin ziemlich eingerostet, aber ich kann das meiste herausfinden.