2011-01-09 10 views
2

Ich lade ein Bitmapfont (als PNG-Bild) in meiner OpenGL-Anwendung, um Zeichen von dort mit einer festen Größe zu rendern. Das funktioniert. Aber: Wenn ich einige Glyphen kleiner skalieren möchte, sieht es nicht gut aus. Gibt es einen Weg, ohne vorgefertigte Mipmaps (ich habe einen großen Haufen von mehreren Charakteren und brauche stufenlose Größen), um diese schöner zu skalieren? Irgendeine Art der Interpolation oder etwas?Scale Bitmapfont klar mit OpenGL (Interpolation)?

Im Moment habe ich so etwas wie dieses verwenden (C/C++ auf Mac OS X):

glPopMatrix(); 
glEnable(GL_TEXTURE_2D); 
glEnable(GL_BLEND); 
glBindTexture(GL_TEXTURE_2D, texture->getID()); 
glScalef(0.7f, 0.7f, 0); //scale here a size 

{draw vertexes & set texcoords} 

glDisable(GL_BLEND); 
glDisable(GL_TEXTURE_2D); 
glPushMatrix(); 

Jeder Vorschlag?

+0

Artikel 17.020 in dieser FAQ: http://www.opengl.org/resources/faq/technical/fonts.htm –

+0

Thats über TrueType-Schriftarten - ich spreche über Bitmap-Schriftarten. Es ist nicht meine Absicht, TrueType-Schriftarten aus verschiedenen Gründen (z. B. Schriftlizenzen) zu verwenden. – Constantin

Antwort

5

Haben Sie versucht, mit Linear-Filterung auf Ihre Texturen ?:

glTexParameteri(GL_TEXTURE_2D, GL_MIN_FILTER, GL_LINEAR); 
glTexParameteri(GL_TEXTURE_2D, GL_MAG_FILTER, GL_LINEAR); 

Diese nach Texturen Bindung.

+0

Oh, ja - danke. Genau das habe ich gesucht. – Constantin

+1

BTW - Game Programming Gems, Teil 6 hat einen Artikel darüber, wie man eine gute Skalierung von Zeichen (also auch Glyphen) erreicht. Eine einfache Möglichkeit, viel bessere Ergebnisse zu erzielen als mit der regulären linearen Interpolation, die zu verschwommenen Grenzen führt. – Kos