bin grade dabei meine eigene Imagelist-Klasse zu erstellen.. ich habe vorher AdImageList verwendet, will es jedoch unabhängig davon machen, da ich jetzt auch direkt mit der dglOpenGL.pas arbeite! Es soll aber schon so ähnlich werden.
Nun habe ich schon paar Programmieransätze versucht mit Streams und TBitmap, das alles zu einer Datei zu packen und dann die einzelnen Bitmaps wieder zu TglBitmap2D-Objekten zu machen... Nur leider will es einfach nicht funktionieren!
Dieser Code zum Beispiel... Ich kriege eine Access Violation der Art "Read of address 00000000"..
Code:
Tex1 := TglBitmap2D.Create;
Tex1.LoadFromFile('texture.bmp');
Tex1.GenTexture(false);
MemoryStream := TMemoryStream.Create;
Tex1.SaveToStream(MemoryStream, ftBMP);
hab auch ähnliche sachen probiert wie AssignFromBitmap. Funktioniert auch nicht
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Du hast eigentlich gar keine lokalen Texturdaten mehr. Das liegt daran, dass die glBitmap nach dem Erstellen der Textur (GenTexture) die lokalen Texturdaten löscht, weil die in über 98% der Fälle nicht mehr benötigt werden und dann nur unnötig Speicher belegen.
Verhindern kannst du das in dem du die Eigenschaft FreeDataAfterGenTexture bei den betroffenen Instanzen auf False setzt. Praktischerweise bevor du GenTexture aufrufst, da die Daten sonst schon wieder weg wären.
Alternativ kannst du auch die globale Einstellung mittels glBitmapSetDefaultFreeDataAfterGenTexture setzen. ABER das musst du setzten bevor du irgendeine Klasseninstanz der Unit erstellst. Denn beim Erstellen der Instanzen werden die globalen Einstellungen erfragt und wenn die den Wert noch nicht enthalten klappt es natürlich nicht.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Habe das gerade selber mal ausprobert und bei mir ging es. Habe aber nicht kontrolliert ob das Bild auch gestimmt hatte. Aber so viel selbstvertrauen habe ich mal.
Stelle bitte sicher, dass du die neuste Version der glBitmap benutzt. Und solltest du das DGL-SDK installiert haben, dann stelle bitte auch sicher, dass dein Delphi auch wirklich die neuste Version der glBitmap benutzt. Dazu entweder ins DGL-SDK wechseln und dort vorhandene löschen oder überschreiben.
Sollte das auch nichts ändern, dann sei bitte so gut und lasse mir mal dein Bild zukommen. Entweder packen und hier anhängen oder mir per Mail zuschicken. Adresse kannst du auf der Teamseite finden.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Taner hat geschrieben:
Eigentlich sollte man diese Zeile ja auskommentieren oder?
Code:
{.$define GLB_NO_NATIVE_GL}
Wenn man das sollte, dann hätte ich es weggelassen.
In der glBitmap existieren verschiedene Defines mit denen du die Unit steuern kannst. Das kann man machen muss man aber nicht. Dieses Define dient dazu den in der glBitmap eingebauten Header zu deaktivieren. In diesem Mini Header habe ich nur die Funktionen eingebaut die ich in der Unit brauche. Das dient dazu, dass man die glBitmap auch mit anderen Headern benutzen kann. Und sie nicht zwingend nur in Verbindung mit der dglOpenGL funktioniert.
PS: Aber ich begrüße es natürlich immer, wenn man dafür sorgt, dass die Header auf dem aktuellen Stand sind. Auf die ein oder andere Weise.
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast
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.