Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Di Jul 08, 2025 20:39

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Mi Mär 10, 2004 15:22 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Ich habe mittels glBMP eine .jpg Textur auf ein Quad gelebt. Leider sieht die Textur überhaupt net mehr so aus wie ich die mal gemalt hatte.

Siehe Anhang. Woran kann das liegen??

Das das ganze noch Bildfüllend ist, sieht das schon ziemlich scheiße aus.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mär 10, 2004 15:29 
Offline
DGL Member
Benutzeravatar

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. ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mär 10, 2004 15:32 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
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.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mär 10, 2004 16:01 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Danke euch beiden...
Ich werd mir mal deinen Loader angucken... 8)

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mär 10, 2004 16:19 
Offline
Guitar Hero
Benutzeravatar

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mär 10, 2004 16:29 
Offline
DGL Member
Benutzeravatar

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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mär 10, 2004 16:44 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Du könntest ja mal (wenn du Zeit hast) die History innerhalb deiner Unit durch eine kleine Standartbedienungsanleitung ersetzen...

Es geht jetzt und ist auch sehr bequem. :D

EDIT: Was ich gerade erst bemerkt habe ist, dass ich jetzt einen glError (GL_INVALID_OPERATION) beim binden der Textur bekomme.

Ich binde mit:
Code:
  1. procedure ShowStartScreen;
  2. // Zeigt das Intro Bild
  3. begin
  4.      glBindTexture(GL_TEXTURE_2D,GVTextures[1].TextureID);
  5.      glBegin(GL_QUADS);
  6.          glTexCoord2f(0,1); glVertex3f(-3,-2.1,0);
  7.          glTexCoord2f(1,1); glVertex3f( 3,-2.1,0);
  8.          glTexCoord2f(1,0); glVertex3f( 3,2.1,0);
  9.          glTexCoord2f(0,0); glVertex3f(-3,2.1,0);
  10.      glEnd;
  11. end;


Was mach ich falsch??

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 14 Queries | GZIP : On ]