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

Aktuelle Zeit: So Jul 13, 2025 16:25

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



Ein neues Thema erstellen Auf das Thema antworten  [ 21 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
BeitragVerfasst: Fr Apr 29, 2005 18:50 
Offline
DGL Member

Registriert: Sa Apr 02, 2005 15:11
Beiträge: 41
Hi,
folgendes Problem, dass ich einfach nicht lösen kann.
Ich zeichne ein Spielfeld (alles 2D) bestehend aus Quadraten mit einer Textur. Ich möchte nun, dass die Textur so wie sie im Original ist, erhalten bleibt. Also keine Farbveränderung.
Zum Texturenladen benutze ich die Textures.pas , die auch in den Tutorails vorkommt.
Das Problem ist jetzt, dass ich einen eigenen Mauszeiger einbauen wollte. Ich zeichne also an der Stelle, an der sich die Maus befindet ein Qudrat mit einer Textur drauf. Nun sieht man aber die Farbe des Quadrats an all den Stellen, an der die Textur transparent sein soll. Es soll aber nicht ie Farbe des Quadrats sichtbar sein, sondern alles andere, was darunter gezeichnet wird, inkl. der Texturen.
Ich hab ein bisschen mit den Einstellungen rumgespielt in der Textures.pas , jedoch ist es nicht möglich beides zu erreichen.
Wenn ich glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE) benutze, dann wird zwar der Cursor richtig dargestellt, aber alles andere is im Po.
Wenn ich nun glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL) nehme, wird alles richtig dargestellt, bis auf den Mauszeiger der einen Hintergrund in der Farbe des Quadrats, auf dem die Textur ist, hat.

Kannn mir dabei jemand helfen?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 29, 2005 19:53 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Schon mal an Blending gedacht? Das klingt für normal nach einem Fall für Blending.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 29, 2005 20:05 
Offline
DGL Member

Registriert: Sa Apr 02, 2005 15:11
Beiträge: 41
Hab ich schon ausprobiert, aber dann wird die Textur selber auch transparent. Die soll aber zu sehen sein, is schließlich der Cursor :P


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 29, 2005 20:10 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Denke auch, dass ein Alpha-Test wohl eher das richtige sein sollte: http://wiki.delphigl.com/index.php/GlAlphaFunc
Irgendwo schwebt im Netz auch ein Beispiel für dessen Einsatz rum. Am einfachsten wird es wohl sein etwas wie PNG zu nehmen, was einen Alpha-Channal hat und diesen einfach dafür zu mißbrauchen.

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 29, 2005 20:19 
Offline
DGL Member

Registriert: Sa Apr 02, 2005 15:11
Beiträge: 41
Du scheinst nicht zu verstehen wo das Problem ist. Das transparent mit der Alphafunc funktioniert ja auch einwandfrei. Nur beim Mauscursor ist das Problem, dass man dann die Farbes des QUADRTS sieht und nicht den Untergrund. Is ja auch agnz logisch dass es so ist.Soll aber nicht.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 29, 2005 21:13 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Nov 13, 2004 11:00
Beiträge: 229
Wohnort: Steinhude
ich muss zugeben, dass mir aus der Beschreibung jetzt nich ganz klar ist, wie das Problem genau aussieht.
vll. könntest du dazu mal nen Screenshot und/oder dazugehörigen code posten?
weil soweit ich das verstanden habe müsste das alphatest oder glblend mit entsprechenden functionparametern und nem gescheiten Alphachannel eigentlich tun.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 29, 2005 21:29 
Offline
DGL Member

Registriert: Sa Apr 02, 2005 15:11
Beiträge: 41
Ich bekomms nur so
http://img222.echo.cx/my.php?image=decal3tp.jpg
oder so hin.
http://img176.echo.cx/my.php?image=modulate3ch.jpg


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 29, 2005 22:51 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Und genau das sieht für mich alles nicht nach einem Alpha-Test aus, zumal ich nämlich beim ersten Bild keinerlei Transparenz erkennen kann. Achtung nur für den Fall, dass es untergegangen ist: Ich rede nicht von Blending, sondern von einem Alpha-Test.
Code:
  1.  glEnable(GL_ALPHA_TEST);
  2. glAlphaFunc(GL_GREATER, 0.1);

Zusammen mit einem Bild (sowie einen Loader) der einen Alpha-Channel beinhaltet (Achtung, esmuss auch RGBA statt RGB geladen werden), sollte einen gewünschten Effekt erzielen. Deswegen frage ich nochmal explizit nach, ob das Alpha-Test bei Dir nicht funktioniert. Ansonsten... vielleicht komme ich Sonntag nochmal kurz dazu ein kleines Beispiel zu schreiben.

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 29, 2005 23:08 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Das Decal bzw. Modulate bezieht sich auf die Überblendung zwischen der aktuellen Farbe und der aktuellen Texture und nicht mit dem Hintergrund. Dafür ist glBlendFunc da, falls du das erreichen willst.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 29, 2005 23:08 
Offline
DGL Member

Registriert: Sa Apr 02, 2005 15:11
Beiträge: 41
Alphatest ist an. Aber der AlphaTest rendert doch nur bestimmte Teile der Textur(!!). Bei dem Teil, der Transparent ist, seht man doch dann das Quadrat!? Oder etwa nicht?
Denn genau das passiert bei mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 29, 2005 23:40 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Versuchs mal die Reihenfolge:
Zeichene Szene komplett mit Textur
Aktiviere Alphatest
Zeichne Cursor
Deaktiviere Alphatest

Wenn dein Alphakanal ordentlich gelegt ist, werden all die Teile die unsichtbar sind auch wirklich nicht gezeichnet. Dadurch wird die Sichtbare Form des 4Ecks auf den Teil beschränkt, der Texturiert ist. Ein Viereck sieht man also nicht mehr.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 29, 2005 23:49 
Offline
DGL Member

Registriert: Sa Apr 02, 2005 15:11
Beiträge: 41
Der Alphatest ist bei mir von vorn herein aktiviert. Direkt im OnCreaten. Das mach ich, weil es keinen grund gibt den zu deaktivieren.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Apr 30, 2005 10:50 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also zum Verständnis ein Alphatest lässt nicht einfach Teile der Textur weg und zeichnet an den Stellen dann das Quad. Die Textur und das Quad vermischen sich zu einer Einheit. Das soll bedeuten die Farbe des Quads und der Textur verbinden sich. Und ein Alphatest lässt somit die Teile des Quads weg.

Aber zum Thema maus. Ich habe auch schon mal ein Mauscursor gerendert und nur weil er einen weichen Rand hatte habe ich mit blending gearbeitet. Sonst hätte der Alphatest ausgereicht. Wenn deine Textur einen richtigen Alphakanal hat und das alles richtig geladen wurde sehe ich da auch überhaupt kein Problem. Evtl solltest du mal schauen ob das alles richtig ist, dann sollte Alpha bzw Blending vollkommen ausreichen.

Natürlich immer vorrausgesetzt ich habe dein Problem richtig verstanden. Wobei ich mir da gerade nicht so sicher bin. ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Apr 30, 2005 11:22 
Offline
DGL Member

Registriert: Sa Apr 02, 2005 15:11
Beiträge: 41
Also wenn auch das Quad transparent werden müsste, dann stimmt bei mir was nicht. Bin mir sicher dass ich den Alphakanal richtig gesetzt habe, zumal ads nicht die erste Textur ist. Nur leider sieht man da immer die Farbe des Quads, an der Stelle die durchsichtig sein müsste :/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Apr 30, 2005 11:52 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Funktioniert also definitiv. Habe hier zwar nur FPC zur Hand, aber ich denke an des angehängten Beispieles solltest Du es schnell mit Delphi kompiliert bekommen. Die Textur enthält einen Alpha-Channel und Du solltest die schrift sehen. Der Hintergrund wird mit einem dunklen rot gerendert und dahinter befindet sich noch ein blaues Dreieck. Hoffe, dass hilft Dir weiter.


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


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 ]