Registriert: Mo Jan 31, 2005 11:02 Beiträge: 432 Wohnort: Rheinlandpfalz
Hallo @all,
Ich finde die glBitmap.pas besser als die glBmp.pas (und die textures.pas),
da sie viel mehr Funktionen beinhaltet, und auch übersichtlicher ist.
Also will ich umsteigen von glBmp zu glBitmap.
Ich hatte ein OGl-programm geschrieben was glBmp benutzt.
ich habe es schon versucht umzuschreiben, aber es kommt immer zu
der folgenden exception:
Project Og15.exe raised exception class EAbstractError with message 'Abstract Error'.
Process stopped...
ich benutze die glbitmap V1.17
Ich hab den code mal upgeloaded mit dem Quellcode als textdatei, einmal mit glbmp.pas
und umgeschrieben mit glbitmap.pas in einem Zip.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Ohne mir den Code anzusehen denke ich, dass ich weiß woran es liegt. Auf Grund des Fehlers das einzige was es sein könnte.
Du benutzt die Klasse TglBitmap oder? Das ist natürlich nicht ganz richtig. In dieser Klasse sind diverse Funktionalitäten implementiert die alle Ableitungen davon benötigen. Aber als eigenständige Klasse ist sie nicht in der Lage auch nur ansatzweise eine sinnvolle Textur zu erzeugen. Eben weil es von Fall zu Fall unterschiedlich ist.
Die Lösung zu deinem Problem. Benutz anstelle der Klasse TglBitmap die Klasse TglBitmap2D. Also die Ableitung für 2 Dimensionale Texturen. Wenn du eine 1 Dimensionale Textur verwenden möchtest, dann solltest du die Klase TglBitmap1D.
PS: Evtl sollte ich in der nächsten Version etwas einbauen um solche Probleme zu vermeiden...
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Jetzt habe ich mir deinen Code doch mal angesehen und habe auch gleich noch was gefunden was so nicht funktionieren kann. Ich denke mal, dass du das bisher noch nicht aufrufst, da es sonst eine Exception gegeben hätte.
Und zwar die Zeile SpaceTex.SetTextureWrap(0, 1); 0 und 1 sind keine gültigen Werte für diese Methode. Gültige Werte sind GL_CLAMP, GL_REPEAT, GL_CLAMP_TO_EDGE und GL_CLAMP_TO_BORDER.
Abgesehen davon hat der Aufruf von SetTextureWrap zu diesem Zeitpunkt keine Auswirkung mehr auf die eigentliche Textur, da diese Werte nur beim Erstellen gesetzt werden. Also bringt es nur etwas, wenn diese Methode vor GenTexture aufgerufen wird.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Bitte wo soll ich das Virtual hinschreiben?
Virtual kann man nur bei Methoden verwenden und dann hat es einen ganz anderen Sinn.
Sofern man eine Klasse erstellt die noch abstrakte Methode beinhält weißt der Compiler einen mit Warnungen darauf hin. Und wenn man dann immer noch nicht drauf reagiert, dann bekommt man eben den abstrakten Fehler um die Ohren geschmissen. Aber als unerfahreren OOP Entwickler kann man so etwas nicht wissen. Aber dafür gibt es ja Foren wo einem freundliche Entwickler weiterhelfen.
Ich hatte mal irgendwo (ich glaube, es war delphipraxis) gesehen, wie verhindert wird, dass von einer Klasse Instanzen erstellt werden, wenn keine erstellt werden sollen. Dazu wurde AFAIK im constructor Create geprüft, ob Create von einer Tochterklasse aufgerufen wurde. Wenn dem nicht so war, gab es eine Exception, die dem Entwickler klarmachte, dass er nicht von der Elternklasse direkt Instanzen erstellen soll...
Das wäre doch eine Möglichkeit, dass TglBitmap nicht direkt erzeugt wird.
Registriert: Mo Jan 31, 2005 11:02 Beiträge: 432 Wohnort: Rheinlandpfalz
Gut, dann gehts ja.
Danke. jetzt kann ich endlich die bessere glbitmap nutzen.
PS: die Zeile mit dem TextureWrap habe ich irgendwoher, ich glaube aus
irgendeinem Beispielprogramm zu Cubemaps, das hatte warscheinlich einen anderen loader benutzt.
PPS: der code ist DER code aus meinem letzten Problem (Textur aus der Textur erstellen), was ich schon angesprochen
hatte mit der dyn. cubemap usw.
vielleicht seht ihr da noch einen anderen weg als mit dem PBuffer. (ist nämlich sehr kompliziert. trotz des guten
Tutorials von SoS.) Wäre schon wenns auch einfacher geht.
Mitglieder in diesem Forum: Google [Bot] und 6 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.