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

Aktuelle Zeit: Sa Jul 05, 2025 17:43

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



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: preblem mit alpha bei .png
BeitragVerfasst: Fr Nov 16, 2007 09:01 
Offline
DGL Member

Registriert: Di Mär 27, 2007 18:47
Beiträge: 19
Morgen..

ich hab mal wieder ein problem, bei dem ich mir sicher bin, dass es ein ganz blöder fehler ist, den ich einfach nur nicht sehe.
ich will in mein spiel eine .png textur mit alpha wert laden. das laden ansich klappt auch ganz gut aber bei der darstellung bin ich zimlich unzifrieden.

hier der codeschnipsel wo texturen geladen werden.

Code:
  1. procedure LoadTexture(n: string; id: integer);
  2. var
  3.   tex : PSDL_Surface;
  4. begin
  5.   tex := IMG_Load(Pchar('Data/Texture/' + n));
  6.   if assigned(tex) then
  7.   begin
  8.     glGenTextures(1, @TexID[id]);
  9.     glBindTexture(GL_TEXTURE_2D, TexID[id]);
  10.        
  11.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  12.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  13.  
  14.     glTexImage2D(GL_TEXTURE_2D, 0, 3, tex^.w, tex^.h,0, GL_RGBA, GL_UNSIGNED_BYTE, tex^.pixels);
  15.  
  16.     SDL_FreeSurface(tex);
  17.   end;
  18. end;


und hier der teil wo die texturem verwendet werde nsollen

Code:
  1. procedure DrawParticles;
  2. var
  3.   i: Integer;
  4. begin
  5.     //glDisable(GL_DEPTH_TEST);           // disable Depth testing
  6.     glEnable(GL_BLEND);                 // enable blending
  7. glColor3f(1,1,1);
  8. For i := 1 to Particles do
  9. begin
  10. glBindTexture(GL_TEXTURE_2D, TexID[Particle[i].Texture]);
  11. glTranslatef(Particle[i].Position.X,Particle[i].Position.Y,Particle[i].Position.Z);
  12. glRotatef(-CamRZ,0,0,1);
  13. glRotatef(-CamRY,0,1,0);
  14. glRotatef(-CamRX,1,0,0);
  15.   glBegin(GL_QUADS);
  16.     glTexCoord2f(1,1); glVertex3f(- Particle[i].Size,- Particle[i].Size,0);
  17.     glTexCoord2f(1,0); glVertex3f(+ Particle[i].Size,- Particle[i].Size,0);
  18.     glTexCoord2f(0,0); glVertex3f(+ Particle[i].Size,+ Particle[i].Size,0);
  19.     glTexCoord2f(0,1); glVertex3f(- Particle[i].Size,+ Particle[i].Size,0);
  20.   glEnd;
  21. glRotatef(CamRX,1,0,0);
  22. glRotatef(CamRY,0,1,0);
  23. glRotatef(CamRZ,0,0,1);
  24. glTranslatef(-Particle[i].Position.X,-Particle[i].Position.Y,-Particle[i].Position.Z);
  25. end;
  26. glDisable(GL_BLEND);
  27. //glEnable(GL_DEPTH_TEST);
  28. end;


ich hänge noch ein bild vom ergebnis an...


kann mir jemand verraten was ich falsch mache?


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Nov 16, 2007 09:13 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Ich habe das Thema mal verschoben. ;)

Zwei Dinge fallen mir so Spontan auf. 1. Du lädst zwar ein PNG allerings sagst du OpenGL, dass du lediglich 3 Componenten haben möchtest. Also beim Aufruf von glTexImage ist dein dritter Parameter eine 3. Für ein RGBA Bild sollte das aber 4 oder GL_RGBA sein. Aber du solltest da generell etwas vorsichtig sein. Denn du sagst auch beim Parameter InternalFormat, dass es sich um RGBA handelt. Falls du dann mal eine Datei lädst die keinen Alphakanal hat wirst du dann Problem bekommen.

2. Du aktivierst zwar Blending aber du hast keine BlendFunc mittels glBlendFunc gesetzt. Falls du diese irgendwo anders schon setzt dann vergiss meinen Einwand. Falls nicht dann schau dir mal unser siebtes Tutorial an. Bzw ist die meist genutze Blenfunc auch (SRC_ALPHA, ONE_MINUS_SRC_ALPHA).


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Nov 16, 2007 09:25 
Offline
DGL Member

Registriert: Di Mär 27, 2007 18:47
Beiträge: 19
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

habe ich drin (hatte es aber aus unerfindlichen gründen irgendwann rausgemacht)
bringt aber nichts. Da ich jetz keine zeit bzw lust habe ein ganzes tutorial durchzuarbeiten - hat jemand ein beispiel?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Nov 16, 2007 09:44 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Die BlendFunc war ja nur eine Sache. Dass ich in meinem Post noch von etwas anderem geschrieben habe hattest du aber gesehen oder? Um es noch mal deutlicher zu sagen. Beim Erstellen der Textur ignorierst du den Alphakanal in dem Bild. Und ohne Alphakanal kann natürlich diese Blendfunc auch nicht funktionieren.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Nov 16, 2007 10:05 
Offline
DGL Member

Registriert: Di Mär 27, 2007 18:47
Beiträge: 19
ja hab ich gelesen... naja ich hab von .png alpha etc. keine ahnung weil ich bis jetz immer jpg benutz habe


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Nov 16, 2007 10:22 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
War da jetzt eine Frage in deinem Post?

Wenn du etwas nicht verstanden hast oder sonst etwas unklar ist dann frage. Wir können nicht wissen wo genau deine Lücken sind. Allerdings erwarte bitte nicht, dass wir für dich dein Programm schreiben. Zu mindest ich für meinen Teil lehne so etwas ab. Denn so etwas bringt sowohl mir als auch dir nichts. Zu mal ich dir eigentlich in meinem ersten Post bereits beschrieben habe was an deinem Code nicht Ordnung ist.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Nov 16, 2007 10:34 
Offline
DGL Member

Registriert: Di Mär 27, 2007 18:47
Beiträge: 19
ja. und genau das hab ich mir angeguckt, angewand und jetzt funktioniert es, danke ^^


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 3 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.010s | 15 Queries | GZIP : On ]