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

Aktuelle Zeit: Mi Jul 16, 2025 01:39

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: Problem mit glAlphaFunc
BeitragVerfasst: Mi Dez 28, 2005 14:33 
Offline
DGL Member

Registriert: Mo Dez 26, 2005 22:27
Beiträge: 117
Programmiersprache: Pascal, C++
Ich will meine Texturen den schwarzen Außen rand wegschneiden und zwar mit folgenden Code

Code:
  1.  
  2.  
  3. glEnable(GL_ALPHA_TEST);
  4. glAlphaFunc(GL_GREATER, 0.1);
  5.  
  6.  
  7. for i:=0 to length(main.asteroids)-1 do begin
  8. glBindTexture(GL_TEXTURE_2D, main.asteroids[i]);
  9.  
  10.   glPushMatrix;
  11.   glTranslatef(x_aster[i], y_aster[i], 0);
  12.  
  13.    glBegin(GL_QUADS);
  14.        glTexCoord2f(0,1);  glVertex3f(0, 0, 0);
  15.        glTexCoord2f(1,1);  glVertex3f(20, 0, 0);
  16.        glTexCoord2f(1,0);  glVertex3f(20, 20, 0);
  17.        glTexCoord2f(0,0);  glVertex3f(0, 20, 0);
  18.     glEnd;
  19.   glPopMatrix;
  20. end;
  21.  
  22.  
  23. glDisable(GL_ALPHA_TEST);
  24.  



Eigentlich sollte er mir jetzt schwarze Pixel nicht anzeigen. (oder? :? )

Naja, er macht absolut nichts... Ich habe auch schon alle anderen Parameter wie GL_LESS usw. ausprobiert, aber er macht gar nichts.
Vielleicht liegt es an meinen Bildformat.. Ich benutze das TARGA-Bildformat..

Kann mir jemand sagen woran das liegt? Wird der Alpha-Kanal etwa nicht richtig geladen?

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Dez 28, 2005 14:39 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Probier's mal mit glEnable(GL_BLEND) oder so ähnlich. Jedenfalls muss AFAIK für einen funktionierenden Alphatest Blending aktiv sein.

Und TGAs sind prädestiniert für Alphatests wegen dem Alphachannel. Insofern solltest du dir da keine Sorgen machen ;)

Bei Alphatests solltest du danach aber noch irgendwie die Ränder abschneiden... Denn am Rand der Alphamaske werden halbdurchsichtige Texel übrigbleiben. Und die schauen sehr strange aus, bei genauerem Betrachten. Man kann die aber wegbekommen. Ich weiß bloß nicht, wie ;)

_________________
"Für kein Tier wird so viel gearbeitet wie für die Katz'."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Dez 28, 2005 14:48 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Das mit dem Blenden stimmt leider nicht.

Versuch mal den Schwellwert etwas größer anzusetzen. z.B: 0.2

Treten irgendwelche Fehler auf?

TGAs sind aber tatsächlich prädistiniert für Blending wegen dem AlphaKanal.

Mir fällt gerade auf, hast du das TGA auch wirklich mit 32Bit gespeichert? Nicht vielleicht 24Bit?

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Dez 28, 2005 14:51 
Offline
DGL Member

Registriert: Mo Dez 26, 2005 22:27
Beiträge: 117
Programmiersprache: Pascal, C++
Flash hat geschrieben:
Mir fällt gerade auf, hast du das TGA auch wirklich mit 32Bit gespeichert? Nicht vielleicht 24Bit?


Nein, ich habe 24 Bit... Ist das von Bedeutung?

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Dez 28, 2005 15:04 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Hehe.. dann weiß ich worans liegt.

8 Bit pro Farbe. Rate mal was fehlt ;)

Der Alphakanal. Kein Wunder das der Test nicht weiß, was er machen soll. 8)

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Dez 28, 2005 15:11 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Frase: Alphamasking und Blending sind zwei ähnliche aber völlig getrennte Dinge. Die können natürlich auch unabhängig voneinander benutzt werden.

Zitat:
Nein, ich habe 24 Bit... Ist das von Bedeutung?

Natürlich. Ohne Alphakanal kannst du auch keinen Alphatest machen. Wollte auch gerade danach fragen aber irgendwie bin ich heute zu langsam. ;-)

Und etwas zum Verständnis schwarze Pixel sind nicht gleich Alphakanal. Schwarze Pixel sind schwarze Pixel wärend ein Alphakanal so etwas ist wie die Farbe blau nur, dass die regelt wie sichtbar deine einzelnen Pixel sind. Und genau den müsstest du in deinem Grafikprogram erstellen. Du musst beim Hochladen der Texturdaten dann natürlich mit angeben, dass ein Alphakanal vorhanden ist. Sonst lässt den OpenGL mit weg.

Das was Frase meint resultiert durch den Weichzeichner in OpenGL. Der blendet die Pixel schon so leicht über wärend sie aber noch sichtbar sind. Wegbekommen tut man diese nur, indem man dafür sorgt, dass die ausgeblendeten Pixel genau die selbe farbe haben wie die noch sichtbaren. Also solltest du am einfachsten die Bilder in einem Grafikprogramm bearbeiten und den Rand entsprechend anpassen und das ausblenden mittels Alphakanal machen. Bei Texturen für Modelle hat ihr bestimmt auch schon mal gesehen, dass die Kanten nie direkt aufhören sondern noch ein bisschen weiter gehen. Genau das selbe Phänomen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Dez 28, 2005 16:44 
Offline
DGL Member

Registriert: Mo Dez 26, 2005 22:27
Beiträge: 117
Programmiersprache: Pascal, C++
Okay, danke :D

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.


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

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