ich wollte ein paar 2D-Objekte beschriften und habe dies zunächst mit 8x8-Bitmaps und glBitmap getan. Nun passen sich diese natürlich nicht der Auflösung an, aber Skalierungen und Bitmaps schließen sich vermutlich aus, oder gibt es doch einen Weg? Es müsste auch gar nicht unbedingt flüssig sein, zur Not würde es mir reichen, eine 8x8-Bitmap auf eine 16x16, 32x32, usw. -Bitmap abzubilden, solange es nicht zu performance-lastig wird.
Eine andere Lösung wäre natürlich, anstatt der Bitmaps Polygone mit den entsprechenden Zeichen als Textur zu verwenden. Mit dem Alpha-Test erhalte ich aber immer unschöne weiße Fransen und eine Blending-Einstellung, die weiche Übergänge überzeugt, habe ich auch nicht entdeckt.
Mit blending geht das einfach:
Farb komplett weiß(Wahrscheinlich kann man den sogar irgendwie weglassen), die Schrift in den Alphakanal. Dann mit standard alphablending rendern. Textfarbe mit glColor festlegen.
Thx, klappt wunderbar. Vielleicht könnt ihr mir dennoch noch einen kleinen Tipp geben, wenn nicht, dann läufts auch so.
Habe den Zeichensatz in eine Textur verpackt (tga), die natürlich nur 1x geladen werden muss. Dies würde ich gerne im Initialization-Part der Unit machen, wo ich die Funktion glWrite zum Text ausgeben definiert habe. Funktioniert nur leider nicht. Bei _glGenTextures(n, textures) in dglOpenGL tritt eine Access Violation (000000000) auf. Lade ich die Textur normal, also nicht im Initialization-Part, läuft alles glatt. Der Initialization-Part von dglOpenGL wird VOR dem meiner glWrite-Unit aufgerufen, daran sollte es also nicht liegen. Wo dann der Unterschied liegt, habe ich noch nicht herausgefunden.
Hier dann der funktionierende Code, ich verwende die Textures.pas von Jan Horn.
Du kannst OpenGL funktionen erst nach dem initialisieren von OpenGl ausführen. Da du vermutlich im FormCreate initialisierst, kanns du sie in initabschnitten nicht verwenden.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Mir ist noch etwas anderes aufgefallen. Benutzt bitte nicht die Funktionen mit dem Unterstrich. Die gibt es in Wirklichkeit gar nicht. Die wurden nur für .NET eingebaut und es könnte passieren, dass es die irgendwann nicht mehr gibt. Einfach den Unterstrich entfernen das sollte ausreichen.
_glGenTextures wurde von mir nur indirekt aufgerufen, denn sie wird in dglOpenGL.pas selbst verwendet. Die Textures.pas verwendet glGenTextures. Wollte damit nur aufzeigen, an welcher Stelle sich das Programm genau aufhängt.
Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.