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

Aktuelle Zeit: Fr Jul 18, 2025 23:00

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Bestimmte Farbe durchsichtig
BeitragVerfasst: Mo Feb 19, 2007 12:35 
Offline
DGL Member

Registriert: Sa Feb 10, 2007 15:45
Beiträge: 32
Hallo!

Ich weiß, es ist eine Anfängerfrage, aber ich bekomms net gebacken...
Wie krieg ich nur eine bestimmte Farbe durchsichtig???
Theoretisch könnte ich ja auch eine Maske benutzen (habs aber noch nie gemacht).
Aber geht das net auch einfacher, dass man einfach eine Farbe als transparent festlegt?

Grüße
Simon


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 19, 2007 13:00 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jun 20, 2003 13:59
Beiträge: 134
hallo

schau dir mal die glbitmap.pas an da gibts ne methode die nennt sich "AddAlphaFromColorKey" damit sollte es gehen.

_________________
ghost-site.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 19, 2007 13:06 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
Das einfachste in OpenGL wäre glColor4X (z.B. glColor4b, glColor4f). Der Befehl hat 4 Parameter, einer davon ist der Alphawert.
Dieser Alphawert hat z.B. bei glColor4f (beinhaltet Singles, also ein Gleitkommawerte) eine Bandbreite von 0 bis 1.

Bei Alpha = 0 ==> Farbe ist total transparent,
bei Alpha = 1 ==> Farbe ist total undurchsichtig
dazwischen alle Abstufungen davon.
Traude


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 19, 2007 13:23 
Offline
DGL Member

Registriert: Sa Feb 10, 2007 15:45
Beiträge: 32
Ich will dass der weiße Hintergrund durchsichtig wird. Dazu benutze ich zb folgenden Code

Code:
  1.  
  2.     fTexture.AddAlphaFromColorKey(255,255,255,0);
  3.     fTexture.GenTexture(True);
  4.     fTexture.Bind;
  5.     glBegin(GL_QUADS);
  6.         glColor4f(1, 1, 1, 0);
  7.         glTexCoord2f(0,1);      glVertex3d(0, 0, 0);
  8.         glTexCoord2f(1,1);      glVertex3d(0, 12, 0);
  9.         glTexCoord2f(1,0);      glVertex3d(12, 12, 0);
  10.         glTexCoord2f(0,0);      glVertex3d(12, 0, 0);
  11.     glEnd;
  12.  


Aber es tut sich gar nix, Ich Seh immernoch das blöde Weiß... :cry:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 19, 2007 13:32 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jun 20, 2003 13:59
Beiträge: 134
schau dir dazu noch mal das alphamasking-tutorial an dort wirst du deine antworten finden. :wink:

edit:

fTexture.AddAlphaFromColorKey(255,255,255,0);
fTexture.GenTexture(True);

dise funktionen solltest du nur einmalig aufrufen wenn du die textur lädst

_________________
ghost-site.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 19, 2007 13:44 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Du kannst nicht direkt sagen, dass du eine bestimmte Farbe weglassen möchtest. Das läuft immer darauf hinaus, dass du einen Alphakanal erstellen musst und dann die entsprechenden Stellen mit dem Alpha 0 belegen musst. Wie PhoenixGL aber schon gesagt hat. Den Alphakanal solltest du nur einmal zu Begin erstellen lassen.

Aber zum Rendern. glColor4f(1, 1, 1, 0); ist nicht so gut. Denn dadurch setzt du den resultierenden Alphakanal auf 0. Der Grund dafür ist, dass der Alphakanal aus der Textur mit dem aus der Farbe multipliziert wird. Und etwas mal 0 ist immer 0. Also entweder benutzt du dann 1 für den Alphawert oder glColor3f(1, 1, 1); dann ist der Alpha der Farbe automatisch 1.

Zum Entfernen deines Alphas musst du den Alphatest aktivieren. Wie das geht steht im Tutorial.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 19, 2007 13:51 
Offline
DGL Member

Registriert: Sa Feb 10, 2007 15:45
Beiträge: 32
Danke!!!
Es funktioniert!!!!!

Falls es jemanden interessiert, es lag daran, dass ich zwar blending und Alphatest aktiviert hatte, die Funktionen aber net eingestellt hatte:

Code:
  1.  
  2.  glEnable(GL_BLEND);
  3.  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  4.  
  5.  glEnable(GL_ALPHA_TEST);
  6.  glAlphaFunc(GL_GREATER, 0.1);
  7.  


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 » OpenGL


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