JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=9bd7b51afe3f0c63845dae0dacfc2221Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Textur transparent
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 09.11.2004, 12:46    Titel: Textur transparent Antworten mit Zitat

Ich hoffe, dass ich jetzt nicht wieder die Antwort kriege, dass es dafür schon einen Thread gibt. Hab wirklich gesucht, aber komm nicht wirklich weiter.

Ich will auf einen Würfel 2 Texturen aufbringen. Soweit klappt das auch. Die obere Textur ist eine png Datei mit transparent. Von der Textur werden jetzt alle Transparenten Pixel schwarz dargestellt. Ich hab glaub ich schon bald sämtliche Renderstates durchprobiert, aber ich behalte immer diese Pixel schwarz.

Was muss ich machen, damit die pixel die in der Grafikdatei transparent sind, auch auf meinem Würfel transparent sind?
_________________
-+- SchNeiDi74 -+-
-+- www.creative-games.de -+-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
KI
JLI Master


Alter: 39
Anmeldedatum: 04.07.2003
Beiträge: 965
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 09.11.2004, 13:08    Titel: Antworten mit Zitat

Hast du ein Projekt wo die transparenten Bereiche der PNG-Datei transparent dargestellt werden?

Probier es mal mit einem anderen Format. Am besten .tga
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 09.11.2004, 13:26    Titel: Antworten mit Zitat

Ah, war ein guter tipp.

Ich hatte es im Photoshop als png-24 gespeichert. Jetzt als png-8 klappts mit der transparenz.

Danke sehr! Very Happy
_________________
-+- SchNeiDi74 -+-
-+- www.creative-games.de -+-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Otscho
Super JLI'ler


Alter: 35
Anmeldedatum: 31.08.2006
Beiträge: 338
Wohnort: Gummibären-Gasse
Medaillen: Keine

BeitragVerfasst am: 11.12.2006, 18:20    Titel: Antworten mit Zitat

Ich hab auch das Problem, nur hab ich eine png-Datei ohne Alphakanal. Ich möchte, dass das, was Schwarz ist 100%ig tansparent dargestellt wird.
Im 2D-Bereich klappt das auch mit Sprites, nur im 3D-Bereich nicht. Da wird das auch einfach nur schwarz dargestellt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Dr. Best
Senior JLI'ler


Alter: 34
Anmeldedatum: 17.06.2004
Beiträge: 269
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 11.12.2006, 19:09    Titel: Antworten mit Zitat

Wenn du die D3DX Funktionen zum Laden der Textur verwendest (D3DXCreateTextureFromFileEx) brauchst du einfach nur 0xFF000000 für den parameter ColorKey übergeben.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name MSN Messenger
Otscho
Super JLI'ler


Alter: 35
Anmeldedatum: 31.08.2006
Beiträge: 338
Wohnort: Gummibären-Gasse
Medaillen: Keine

BeitragVerfasst am: 11.12.2006, 20:34    Titel: Antworten mit Zitat

Ich hab zum testen auch schon gemacht und wie gesagt funktioniert das mit dem Texturenladen schon, nur wenn es darum geht Texturen auf ein 3D-Object zu rendern wird der Alpha-Kanal nicht berücksichtigt.
Weiß jemand zufälligerweise was man beim Rendern von Primitives alleseinstellen muss, damit mein Alphakanal berücksichtigt wird ?
Denn das wäre herrlich.

Vielleicht poste ich mal meinen bisherigen Code, doch der befindet sich gerade auf einem anderen Rechner.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
The Lord of Programming
Living Legend


Alter: 36
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 12.12.2006, 01:28    Titel: Antworten mit Zitat

Du musst den entsprechenden Renderstate setzen. Ich weiß zwar gerade nicht mehr genau, wie er heißt, aber in der DirectX-Doku wirst du das sicher finden Wink
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 36
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 12.12.2006, 15:11    Titel: Antworten mit Zitat

ALPHABLENDENABLE war glaube ich eins davon. Ich was den Präfix net mer genau, aber sollte sich ja was zu finden lassen.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Dr. Best
Senior JLI'ler


Alter: 34
Anmeldedatum: 17.06.2004
Beiträge: 269
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 12.12.2006, 17:06    Titel: Antworten mit Zitat

Kleiner Auszug aus dem Code meiner Engine:
CPP:
   // Setup the render states
   // The render states which are important for proper alpha blending
   pGlobal->SetRenderState(D3DRS_ALPHABLENDENABLE,true);
   pGlobal->SetRenderState(D3DRS_SRCBLEND,D3DBLEND_SRCALPHA);
   pGlobal->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA);
   pGlobal->SetRenderState(D3DRS_ALPHATESTENABLE,true);
   pGlobal->SetRenderState(D3DRS_ALPHAREF,0x0F);
   pGlobal->SetRenderState(D3DRS_ALPHAFUNC,D3DCMP_GREATEREQUAL);

   // Set up the texture stage states
   pGlobal->SetTextureStageState( 0, D3DTSS_ALPHAOP,   D3DTOP_MODULATE);
   pGlobal->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE );
   pGlobal->SetTextureStageState( 0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE );
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name MSN Messenger
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 13.12.2006, 16:25    Titel: Antworten mit Zitat

für das einfache Benutzen des ColorKeys, also das ersetzen durch transparenz, sind nur die ersten drei RenderStates, die Dr.Best geschrieben hat, nötig. Das andere sind kleine Zusätze, wichtig fürs "richtige" Alpha blending. Und nach dem Rendern net vergessen, das wieder zurückzusetzen, wenn das in deinem Projekt nicht egal ist.

Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Otscho
Super JLI'ler


Alter: 35
Anmeldedatum: 31.08.2006
Beiträge: 338
Wohnort: Gummibären-Gasse
Medaillen: Keine

BeitragVerfasst am: 14.12.2006, 18:07    Titel: Antworten mit Zitat

Danke für die Hilfe. Werds gleich mal ausprobieren und schauen wie das wirkt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Otscho
Super JLI'ler


Alter: 35
Anmeldedatum: 31.08.2006
Beiträge: 338
Wohnort: Gummibären-Gasse
Medaillen: Keine

BeitragVerfasst am: 15.12.2006, 15:47    Titel: Antworten mit Zitat

Ich habs jetzt endlich ausprobiert und es funtzt eigentlich ganz prima.
Nur hat mich das zuerst etwas verwirrt.

Dr. Best hat Folgendes geschrieben:
CPP:
   // Set up the texture stage states
   pGlobal->SetTextureStageState( 0, D3DTSS_ALPHAOP,   D3DTOP_MODULATE);
   pGlobal->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE );
   pGlobal->SetTextureStageState( 0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE );

Wenn man das verwendet wird nur eine bestimmte Textur so halbtansparent und viele andere Texturen funzen überhaupt nicht mehr. Drum hab ich das einfach weggelassen. Aber was mich schon noch interessiert :
CPP:
pGlobal->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);

lässt sich das genauso ferwenden wie eine Modulate-Farbe bei Sprites ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Dr. Best
Senior JLI'ler


Alter: 34
Anmeldedatum: 17.06.2004
Beiträge: 269
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 15.12.2006, 17:32    Titel: Antworten mit Zitat

Dieser Codeschnippsel bedeutet, dass man D3D (bzw. meiner Engine, deswegen pGlobal statt lpD3DDevice) mitteilt, dass es den Alphawert der Diffusecolor nehmen soll und den Alphawert des jeweiligen Texels der Textur um diese beiden dann zusammen zu multiplizieren um den endgültigen Alphawert des Pixels zu erhalten. Der Alphawert der Diffusecolor ist entweder der Wert den man im D3DMATERIAL9 als Alpha angegeben hat oder der Wert der im Vertexshader berechnet wurde.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name MSN Messenger
Otscho
Super JLI'ler


Alter: 35
Anmeldedatum: 31.08.2006
Beiträge: 338
Wohnort: Gummibären-Gasse
Medaillen: Keine

BeitragVerfasst am: 16.12.2006, 16:14    Titel: Antworten mit Zitat

Gäb es da irgend eine Methode, mit der man nachträglich die Farbe eines Meshes verändern kann, so wie es bei Sprites möglich ist ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
The Lord of Programming
Living Legend


Alter: 36
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 16.12.2006, 17:22    Titel: Antworten mit Zitat

Otscho hat Folgendes geschrieben:
Gäb es da irgend eine Methode, mit der man nachträglich die Farbe eines Meshes verändern kann, so wie es bei Sprites möglich ist ?

Hmm, du kannst halt Vertex-weise Farben vergeben, die dann interpoliert werden. Das musst du dann aber auch in der Vertex-Struktur angeben(D3DFVF_DIFFUSE mitangeben). Ansonsten kannst du natürlich auch die Farbe der Textur ändern (geht sicher auch mit Shadern).
Bin mir nicht sicher, obs noch eine einfachere Möglichkeit gibt Razz
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum