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

Aktuelle Zeit: Do Apr 25, 2024 09:55

Foren-Übersicht » Sonstiges » Community-Projekte
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: [Wiki] Alphamasking (Theorie)
BeitragVerfasst: Sa Okt 01, 2005 12:43 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
Ich würde gerne für das Wiki einen Artikel zu Alphamasking verfassen. Im Gegensatz zu den allgemein bekannten Anleitungen, wie etwa von Sascha Willems oder auch die Anleitung zur glBitmap-Unit möchte ich gerne mehr auf die Theorie eingehen, also wie man zum Beispiel aus einer separaten Textur die Alphawerte ausliest und einer Textur so den Transparenzgrad zuweist. Hat da jemand einen Artikel oder ein Whitepaper, das darauf eingeht?
Danke
Boda

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 01, 2005 16:15 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Ich denke mal nicht, dass man da allzu viel zu schreiben kann. Im Endeffekt werden ja nur die Werte eines jeden Pixels mit einem Referenzwert verglichen und wenn die Bedingung erfüllt wird, dann wird das Pixel dargestell anderenfalls nicht. Das Wichtige daran ist ja lediglich, dass ein gesondeter Kanal in die Textur eingefügt werden muss. Aber es kann natürlich durchaus sein, dass ich das alles zu einfach sehe, weil ich zu häufig damit zu tun habe. Das ist jedenfalls meine Meinung.

Sonst kann ich leider nicht mit irgendwelchen Artikeln etc weiter helfen. Selbst im RedBook (frei Version) wird beim Thema Texturierung eher auf alles Andere eingegangen. Aber nicht speziell nur auf den Alphatest.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 01, 2005 17:26 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
Ok danke. Ich habe ja erwartet, dass das Thema nicht recht ergiebig ist.
Nichtsdestotrotz würde mich jetzt mal interessieren, wie du konkret in deinem Loader den Alphachannel an OpenGL übergibst, ich kann das in deinem Source nämlich nicht finden. Wenn es dich stört, dass ich da evtl Betriebsgeheimnisse ;) ausschnüffele, dann sag Bescheid!

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 01, 2005 18:47 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Nein stört mich nicht. Sonst hätte ich die Quellen ja nicht veröffentlicht. ;-)

Kurz zum Aufbau.
Bilddaten werden geladen und in ein TBitmap gepackt. Dieses wird dann an eine Methode übergeben die dessen Daten in den internen Speicher kopiert. Ja ich weiß. Ist mitunter ein wenig umständlich. Aber zwecks Objektorientierung und Bitmapkompatibilität habe ich den Weg gewählt. Abgesehen davon muss ich nicht für jeden Typ (1D/2D) einen eigenen Laderoutine schreiben. Die ist so in der Basisklasse verankert. Und langsam ist es dadurch auch nicht, da ich die Daten blockweise kopieren kann.
Wenn die Bilddaten zugewisesen werden wird geprüft welchen Typ sie haben. Derzeit sind nur BGR (24 Bit) und BGRA (32 Bit) möglich. Dabei wird dann intern das Format festgehalten. In der nächsten Version sind noch ein paar weiter Formate möglich. ;-)

Sollte ein Alphakanal hinzugefügt oder entfernt werden so wird immer ein neuer Speicher angelegt und nur die relevanten Daten kopiert oder neue eingefügt. Das interne Format wird dann anhand der Operation angepasst.

Beim Erstellen der Textur werden die Typvariablen abgefragt und es wird gleichzeitig überprüft ob die OpenGL Implementation diese überhaupt unterstützt. Sollte das nicht der Fall sein so wird eine alternative verwenet. (von BGR(A) in RGB(A) umwandeln) Ich wähle also immer anhand des zu grunde liegenden Formates ein passendes OpenGL Format aus. Das Ganze wird dann mittels glTexImage2D (1D) an OpenGL übergeben. Vorher werden noch diverse Textur Optionen gesetzt. Also Automatische MipMaps, Filterung und Wrap.

Bei den Format muss auch zwischen dem internen Datenformat und dem Zieltexturformat unterschieden werden. Es besteht durchaus die Möglichkeit eine BGRA 8 Bit Pro Kanal Textur zu laden und diese entweder zu komprimieren oder in eine 4 Bit pro Kanal umzuwandeln. Alles eine Frage der Parameter.

Das wars eigentlich schon. Hoffe das war jetzt nicht zu verwirrend.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 01, 2005 21:14 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
Verwirrend war das Ganze nicht, ganz im Gegenteil. Ich habe blos immer noch leichte Probleme, da das Alpha-bezogene rauszulesen. Sehe ich das richtig, dass es da nur auf die vierte Farbkomponente drauf ankommt? Ich habe immer gedacht, dass OpenGL intern eine zweite Textur braucht, die den Alphakanal verwaltet. Aber so macht das natürlich mehr Sinn! Wenn das so richtig ist, dann werd ich mich mal dranmachen, einen Artikel zu verfassen, dass das etwas ausführlicher erklärt.

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 01, 2005 21:21 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
beides geht - je nachdem welchen blendmodi man einsetzt. benutzt man keine seperate alpha textur (sparenderweise GL_ALPHA als int. texturformat) sondern wirklich einen alphakanal in der textur, dann benötigt man GL_RGBA als int. texturformat. Netterweise ist das unabhängig davon, ob in ein Bitmap mit oder ohne Alphakanal gerendert wird.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Foren-Übersicht » Sonstiges » Community-Projekte


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 96 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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 8.085s | 19 Queries | GZIP : On ]