Registriert: Do Nov 11, 2004 13:48 Beiträge: 4 Wohnort: Wiesbaden
Hallöchen,
ich habe einige der Tutoruals und Beispiele ausprobiert. Einige der Beispiele benutzen die unit "glBMP", um Textur-Bitmaps zu laden. Dazu wird ein TGLBMP-Objekt erzeugt.
In den Beispielen wird dieses Objekt NICHT wieder freigegeben!??? Wenn ich es mit "free" freigebe, dann gibt es eine Exception im Stack in "ntDll.dbgBreakpoint". (Debugger steht im offnen CPU-Fenster). Ich hatte bereits schon einmal diesen Effekt, als Windows versuchte etwas freizugeben, das bereits freigegeben wurde(!).
Hinweis: Diese Exception tritt nur auf, wenn die VCL dazugelinkt wurde - nicht, wenn OpenGL ohne die vcl/rtl gerendert wird - das Programm mit einer eigenen WndProc abgearbeitet wird.
Muss man TGLBMP-Objekte nicht freigeben? Wenn doch - wie?
Hmm, die von LossyEx entwickelte Unit zum Laden von Texturen heißt glBitmap, und wenn irgendwelche Fehler auftauchen würden, was schon lange nicht mehr der Fall war , denke ich, dass er sie immer noch pflegen würde. glBmp ist eine Vorgängerunit, die nicht mehr weiter entwickelt wird, d.h. entweder du lässt es egal sein (schlechte Alternative), schreibst deinen eigenen Texturlader, oder verwendest eben glBitmap, das in der Handhabung ohnehin ziemlich ähnlich aber sehr viel flexibler ist.
Registriert: Do Nov 11, 2004 13:48 Beiträge: 4 Wohnort: Wiesbaden
Vielen Dank für die Antwort, und den Tip. Da ein Freigeben eines mit "auxDIBImageLoadA" erzeugten Pointers wohl nicht möglich ist (s. Link), habe ich nach einer Möglichkeit gesucht in Delphi Texturen zu laden. Dabei bin ich auf die Unit in dem Beispiel gestossen. Dass diese anscheinend nicht mehr aktuell ist wusste ich nicht.
Ist denn das Laden von Grafiken mit der Unit "glBitmap" standard, oder gibt es eine andere amtliche Methode?
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Also Standard ist die unit glBitmap sicherlich nicht. Es gibt noch eine Textures.pas von Jan Horn. Allerdings ist er weg ziemlich genau der Gleiche und der wird von OpenGL vorgegeben. glBitmap.pas ist klassenbasiert und ermöglicht so das manipulieren der Bilder bevor diese an OpenGL geschickt werden. Die Textures.pas bietet lediglich eine Methode und dann bekommt man ein geladenes Bild. Ich persönlich bevorzge Klassen deswegen habe ich die Unit ja auch geschrieben. Der ein oder andere hat da andere vorlieben.
Mitglieder in diesem Forum: 0 Mitglieder und 5 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.