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

Aktuelle Zeit: Do Jul 17, 2025 08:31

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



Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: Masking
BeitragVerfasst: Mo Nov 28, 2011 08:58 
Offline
DGL Member

Registriert: Di Aug 09, 2011 07:33
Beiträge: 163
Programmiersprache: C/C++
Hey,

Habe mich mal etwas mit dem Masking beschäftigt und bin auch auf das Tutorial in der Wiki gestoßen:
http://wiki.delphigl.com/index.php/Tuto ... phamasking

Leider kann ich das nicht wirklich umsetzen. Das Problem ist vorallem, dass ich nur einen "einfachen" Textureloader habe, der halt ein BMP Bild läd aber dazu noch ein Alphabild hinzufügen geht nicht.
Gibt es denn eine Möglichkeit wenn ich beide Bilder einzeln lade und diese dann im Code so anzuwenden, dass das Masking trotzdem funktioniert?

MfG


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Masking
BeitragVerfasst: Mo Nov 28, 2011 16:40 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 10, 2011 19:00
Beiträge: 43
Programmiersprache: FreePascal , C++
Versuchs mal so wie das im Tutorial "Verblendet" im Wiki (Tutorial_Lektion_7) beschrieben ist.
Da ist glaube ich der Unterpunkt 1.3.1 (Welt unter einer Maske) das richtige für dich.

Chapter.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Masking
BeitragVerfasst: Mo Nov 28, 2011 17:41 
Offline
DGL Member

Registriert: Di Aug 09, 2011 07:33
Beiträge: 163
Programmiersprache: C/C++
Erzielt nicht leider das gewünschte Ergebnis. Sieht zwar schon in Ansätzen danach aus aber halt nicht wirklich wie es letztendlich soll^^


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Masking
BeitragVerfasst: Mo Nov 28, 2011 17:50 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Kann dein BMP-Loader keinen Alpha-Kanal? Man kann BMPs auch in 32 Bit mit 8 Bit Alpha speichern und hat so direkt nen Alphakanal.

Besser ist natürlich direkt auf ein modernes Format wie z.B. DDS zumzusteigen, da ist man vom Texturformat her sehr flexibel.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Masking
BeitragVerfasst: Mo Nov 28, 2011 18:18 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Ohne einen Alphakanal wirds halt schwierig. Wenn du keine Graustufen laden kannst zumindest. Dann könntest du mit GL_MODULATE noch was frickeln, aber das ist echt nicht schön. Solltest eher Support für mehr Kanäle einbauen oder halt auf Bibliotheken wie Lossy's glBitmap (für alles Pascaloide) oder SDL_Image (sonstige) umsteigen.

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Masking
BeitragVerfasst: Mo Nov 28, 2011 19:01 
Offline
DGL Member

Registriert: Di Aug 09, 2011 07:33
Beiträge: 163
Programmiersprache: C/C++
Hm okay...
Ich hatte mir halt mal selber einen kleinen Loader geschrieben aber der kann halt nur bmp's einlesen - sicher nicht das modernste, ich weiss.
Dann schau ich mich mal nach was modernerem um und dann wird das wohl auch klappen. :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Masking
BeitragVerfasst: Mo Nov 28, 2011 20:34 
Offline
DGL Member
Benutzeravatar

Registriert: So Sep 26, 2010 12:54
Beiträge: 238
Wohnort: wieder in Berlin
Programmiersprache: Englisch
http://imaginglib.sourceforge.net/ - Vampyre Imaging Library


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Masking
BeitragVerfasst: Mo Nov 28, 2011 21:31 
Offline
DGL Member

Registriert: Di Aug 09, 2011 07:33
Beiträge: 163
Programmiersprache: C/C++
Ich konnte meinen Textureloader nun selber erweitern - und das war eig. garnicht mal so schwer :D Klappt nun also alles!
Aber trotzdem danke an euch für die Hilfe - ihr seid echt eine tolle Community hier :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Masking
BeitragVerfasst: So Dez 04, 2011 00:53 
Offline
DGL Member

Registriert: Di Aug 09, 2011 07:33
Beiträge: 163
Programmiersprache: C/C++
Ich muss das Thema wegen eines Problems wohl nochmal hochschieben.

Wenn ich nun z.B. 2 Objekte mit dem Masking rendere und mich auf eine Linie mit den beiden Objekte stelle, dann sehe ich nur das Objekte, welches ich auch zuerst gerendert habe!
Um das mal ein klein wenig grafisch zu zeigen:

ICH => OBJEKT A => OBJEKT B

Objekt A wird zuerst gerendert, danach Objekt B => Ich sehe beide Objekte. Würde man nun A und B tauschen, dann sehe ich nur Objekte B.
Mir ist durchaus bewusst warum das passiert nur wüsste ich gerne wie man das Problem einfach löst? :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Masking
BeitragVerfasst: So Dez 04, 2011 01:44 
Offline
DGL Member

Registriert: Fr Okt 03, 2008 13:32
Beiträge: 367
Du benutzt Alpha-Blending mit "glEnable(GL_BLEND)" oder?
Da ist es nämlich ganz normal was bei dir passiert. Das Problem ist, dass das 1te Objekt in den Tiefenbuffer schreibt und beim 2ten Objekt dann der Tiefentest fehlschlägt.
Zur Lösung des Problems sortiert man die Objekte und zeichnet erst die am weitesten entfernten.
Wenn man nur additives Blending verwendet, kann man auch das schreiben in den Tiefenbuffer verhindern (glDepthMask(false)).
Außerdem gibt es noch "Depth Peeling", was allerdings ein bisschen komplizierter ist.

Oder man verzichtet auf Blending und verwendet nur den Alpha-Test. Mit dem werden einfach Pixel mit niedrigem Alphawert nicht gezeichet, aber alle Objekte sind undurchsichtig.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Masking
BeitragVerfasst: So Dez 04, 2011 01:47 
Offline
DGL Member

Registriert: Di Aug 09, 2011 07:33
Beiträge: 163
Programmiersprache: C/C++
Nein ich nutze kein glBlend.
Ich habe eine normale Texture und eine Alphatexture, die lade ich zusammen und mache mir daraus letztendlich eine RGBA Texture. Dann kann ich meine fertige Texture ganz normal binden und aufs Objekt packen ohne noch was mit dem blending zu machen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Masking
BeitragVerfasst: So Dez 04, 2011 01:53 
Offline
DGL Member

Registriert: Fr Okt 03, 2008 13:32
Beiträge: 367
Hm? Dann versteh' ich das nicht so richtig. Wo kommt denn da das zweite Objekt ins Spiel?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Masking
BeitragVerfasst: So Dez 04, 2011 02:06 
Offline
DGL Member

Registriert: Di Aug 09, 2011 07:33
Beiträge: 163
Programmiersprache: C/C++
Naja ich habe das alles in einer Displaylist aber bevor die Dinge dort hineinkommen, werden Sie ja über glDrawArrays dargestellt und das wird ja auch erstmal nach und nach abgearbeitet. Und wenn da nun das Objekt mit dem Masking Effekt gerendert werden aber danach noch andere Objekte folgen sieht man diese halt nicht :?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Masking
BeitragVerfasst: So Dez 04, 2011 02:21 
Offline
DGL Member

Registriert: Fr Okt 03, 2008 13:32
Beiträge: 367
Ich versteh' leider noch nicht so ganz was du unter "Masking" verstehst.
Hast du mehrere Objekte auf der gleichen Position und benutzt den Alpha-Test um bestimmte Teile zu überdecken?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Masking
BeitragVerfasst: So Dez 04, 2011 10:49 
Offline
DGL Member

Registriert: Di Aug 09, 2011 07:33
Beiträge: 163
Programmiersprache: C/C++
Okay ich zeig das mal besser mit Bildern!
Meine 2 Beispieltexturen:
Bild Bild

Hier sieht man die fertige Texture nach dem laden 2 mal gerendert:
Bild

Wobei auffällt, dass die hintere Palme nicht richtig dargestellt werden kann. Würde ich mich nun so umpositionieren, dass ich hinter der anderen Palme wäre, könnte man hingegen die erste Palme sehen. Hoffe man versteht es nun :?

Edit// Okay hab das Problem mit GL_ALPHA_TEST gelöst bekommen! :)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 17 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Foren-Übersicht » Programmierung » OpenGL


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