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

Aktuelle Zeit: Di Jul 08, 2025 21:21

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



Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Mal wieder Blending
BeitragVerfasst: Mo Jan 29, 2007 18:56 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jul 20, 2006 17:34
Beiträge: 52
Ich bastel momentan an ner kleinen GUI und hab jetzt ein Problem:
Beim Rollover bei Buttons wird die Rollover-Textur per Blending über die normale Texur gerendert. So weit funktionierts.
Nun will ich aber einbauen, dass der Knopf selber schon geblendet sein kann, und jetzt hab ich ehrlich gesagt ka, wie ichs hinkriegen soll, dass der Button beim drüberblenden nicht mehr und nicht weniger durchsichtig wird. :?

Momentan sieht meine Blend-Func so aus:
Code:
  1. glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

Der Button wird momentan einmal im alten Zustand gerendert, als Alpha der definierte Alphawert, der neu eingefadete Button hat als Alphawert den festgelegten * den einfade-Wert. Dabei der Knopf dann heller.
Wenn ich gleichzeitig die Alte-Zustand-Textur mit dem Festgelegten Wert * (1-Einfadewert) rechne, wird der Button dunkler.
Wie Wie lässt sich das bewerkstelligen :?:

_________________
2+2=5
For extremely large values of two


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 29, 2007 19:35 
Offline
DGL Member
Benutzeravatar

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

du sagtest es funktioniert schon nur nicht wenn der button schon selbst schon geblendet ist ja?

also müsstest du doch jetzt nur bei dem wert aufhören bei dem die button schon ist und wenn du drüber bist das ganze auf exakt den wert setzen bei dem sich der button befindet.

so und jetzt mal sehen ob ich dich richtig verstanden hab. :wink:

_________________
ghost-site.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 29, 2007 19:40 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jul 20, 2006 17:34
Beiträge: 52
Eigentlich ist das ja quasi genau das, was ich schon probiert hab: festgelegter Endwert * einblend-Wert.
Und dann verfehlts den Zielwert, weil es am Schluss ja 2 mal mit dem festgelegten Endwert dargestellt wird.

_________________
2+2=5
For extremely large values of two


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 29, 2007 19:45 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jun 20, 2003 13:59
Beiträge: 134
achso ok ja natürlich der alte wird ja auch noch gezeichnet.
na dann müsstest du den alten gleichzeitig ausblenden.

_________________
ghost-site.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 29, 2007 19:48 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jul 20, 2006 17:34
Beiträge: 52
Auch schon probiert: endwert * (1-einblendwert)
Dabei wird das ganze dann in der Mitte der Animation durchsichtiger als es sein sollte. :(

_________________
2+2=5
For extremely large values of two


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 29, 2007 22:59 
Offline
DGL Member

Registriert: Di Jun 06, 2006 09:59
Beiträge: 474
Ich würde den Button mit Multitexturing rendern, und dann über den Hintergrund blenden.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 30, 2007 18:29 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jul 20, 2006 17:34
Beiträge: 52
Das hört sich doch schonmal ganz gut an, jedoch scheitere ich an der Umsetzung. :(
Ich hab noch nie was mit Multitexturing gemacht und finde auch nichts zum ineinanderblenden von 2 Texturen. :cry:

Kann mir da noch irgendjemand genauere Tipps geben? :?

_________________
2+2=5
For extremely large values of two


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 30, 2007 22:58 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Öhm... ich hab noch gar nicht richtig verstanden was du wie wohin blenden willst. Ließt sich irgendwie verwirrend.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 31, 2007 09:01 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jul 20, 2006 17:34
Beiträge: 52
Ist auch total verwirrend. :?

Ich versuchs nochmal:
Ich programmier an ner Ogl-GUI und hab ein Problem:
Ich hab für Buttons mehrere Texturen, für das Problem sind nur normale und Rollover-Textur wichtig. Bisher hab ich beim MouseOver einfach die Textur ausgetauscht, da hab ich jetzt aber einen Effekt eingebaut, dass die alte Textur weiterhin gezeichnet wird und die neue mit steigendem Alpha-Wert drübergeblendet wird. Ich hab aber auch eine Funktion eingebaut, mit der der Button schon direkt mit nem vom Benutzer der GUI festgelegten Alphawert (mit aktiviertem Blending natürlich) gezeichnet wird. Wird da jetzt aber die neue Textur drübergeblendet, mit Alpha = Wert des Benutzers * Timestep, sieht ist der "gefühlte" Alpha-Wert = 1, da der Button ja 2 mal gezeichnet wird. Den alten Button auszublenden hats auch nicht gebracht, denn da wird die Transparenz in der Mitte der Animation (Timestep=0,5) zu groß. Ich suche also einen Weg, dass der Button doppelt gezeichnet wird, der Hintergrund aber so durchscheint, als wäre er nur einmal gezeichnet worden.

Ich hoffe, jetzt wars verständlich. :)

_________________
2+2=5
For extremely large values of two


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 31, 2007 09:15 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jun 20, 2003 13:59
Beiträge: 134
du könntest auch etwas weiter ausholen und den button undurchsichtig ( wie du es schon gemacht hast ) in eine pixelpuffer-objekt zeichnen und dann nur den durchsichtig machen. :)

_________________
ghost-site.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 31, 2007 09:54 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Ok. Mal kurz zusammengefasst.

Dein Button ist schon transparent. Sagen wir 0.7.

Normalerweise (bei Alpha = 1.0) blendest du eine andere Textur mit Alpha 0.0 -> 1.0 drüber beim Rollover. Jetzt soll aber am das Ganze bei 0.7 Aufhören.
Ich seh da gerade nicht wirklich ein Problem. Du musst doch nur beim Zielalphawert aufhören.

Falls du ein Problem damit hast, dass die Durchsichtigkeit durch das Doppelte blenden nicht mehr korrekt ist, solltest du im gleichen Maß die Orginaltextur ausfaden wie die neue eingefädet wird. Also mit "Zielwert - FadeIn".
(Wobei... beim Blenden wird ja multipliziert und nicht addiert. Könnte sein, dass die Berechnung des Alphawerts nicht so einfach ist. Oder?... achnee sollte schon ne Addition sein. ... Moment.)

Schau dir mal den Wikiartikel zur glBlendFunc an. Da steht drinnen wie die Zielfarbe entsteht. Dann nimmst du dir mal ein Blatt Papier und rechnest mal den Alphawert deines Buttons manuell für einen bestimmten FadeIn Wert aus. Das is nämlich auch noch von deiner BlendFunc abhängig.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 31, 2007 16:01 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jul 20, 2006 17:34
Beiträge: 52
Für den neuen Button isses kein Problem:
Code:
  1. m=Maximumwert
  2. f=Fadein
  3. a1=Alphawert neu
  4. a2=Alphawert alt
  5.  
  6. a1=m*f


Wenn ich jetzt mal davon ausgehe:
Code:
  1. a1+a2=m

Dann kommt das als Umformung raus:
Code:
  1. a2=m-m*f

Dabei wird der Button allerdings dunkler.

Wenn ich von
Code:
  1. a1*a2=m

ausgehe, kommt das raus:
Code:
  1. a2=1/f

Dabei wird der Button aber wieder heller. :(

Aus dem Wiki-Artikel werd ich auch nich schlauer. :cry: :(

_________________
2+2=5
For extremely large values of two


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Mär 04, 2007 18:09 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jul 20, 2006 17:34
Beiträge: 52
Hat keiner ne Idee, wie das klappt? :?

_________________
2+2=5
For extremely large values of two


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 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.013s | 15 Queries | GZIP : On ]