Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Also für mich sieht es so aus als würde er intern eine 16Bit Textur verwenden. Also deine Grafikkarte. Und da glBMP immer GL_RGBA als format verwendet ist das azch klar. Da deine textur keinen Alphakanal hat ,der aber dummerweise bei glBMP IMMER mit verwendet wird, schrumpfen die Genauigkeit der einzelnen Farben auf 4 Bits. Du kannst dem abhelfen in dem du explizit GL_RGBA8 in GenTextures als Format verwendest. Das hat aber den Effekt dass dann alle Texturen in diesem Format abgelegt werden. Was nicht sehr Speicherfreundlich und manchmal auch vollkommmen übertrieben ist. Oder du verwendest einen anderen Loader. Im SDK liegt einer bei. glBitmap.pas. Der ist auch klassenbasiert un dem kannst du von Hand ein Format reinreichen. Das wird nur für die eine Textur übernommen.
PS: Der ist von mir.
Das liegt daran, dass du wahrscheinlich eine 16 Bit Textur bekommen hast. Ati Karten sind bekannt dafür, dass sie, wenn man im glTexImagexxx Kommando GL_RGB oder GL_RGBA (bzw. 3 oder 4) als internalformat angibt, 16 Bit Texturen erstellt.
Dieses Verhalten ist zwar kein Bug, aber doch etwas unorthodox - Abhilfe schafft explizit ein GL_RGB8 oder GL_RGBA8 Format anzufordern.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Hab mal gerade auf glBitmap umgestellt. Mann muss ja zum Glück nur LoadImage zu LoadFromFile ändern.
ABER: Es kommt jetzt ein "Abstracter Fehler" in deiner glBitmap und zwar in der Procedure (TglBitmap.LoadJPG) im innersten try finally Block wo Result ein wert zugewießen wird.
Hab mir das mal angeguckt und mein debugger sagt zu deinem FileStream namens FS folgendes:
FS: () Soll heißen irgendwas mit dem create der Klasse TFileStream scheint net hinzuhauen... Allerdings kenne ich mich mit dem Thema net aus und es könnte auch was anderes sein...
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Also das Problem dürfte ganz einfach sein. Du darfst natürlich nicht die Basisklasse TglBitmap verwenden sondern musst die TglBitmap2D für Zwei dimensionale Texturen und die 1D für ein dimensionale Textur verwenden. Dann sollte es gehen.
Das TexturFormat kannst du direkt durch die eigenschaft TexturFormat einstellen. Dort gibt es nur 4 verschiedenen Werte. Default (Das was glBMP verwendet), 16Bit, 32Bit und compressed. Für die eine Textur solltest du direkt 32Bit verwenden.
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.