Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 08.09.2003, 07:41 Titel: D3DCOLOR_ARGB |
|
|
Langsam muss ich mich wirklich fragen, wann dieses Makro überhaupt funktioniert!
Ich möchte per direktem Zugriff auf die Surface Pixel halbtransparent malen da schreib ich ja dann:
lpSurface[y*Pitch+x]=Color;
Color hat den Datentyp D3DCOLOR und ich weiße im das hier zu:
D3DCOLOR_ARGB(128,0,0,255);
Warum funktioniert das nicht? _________________ The source of all power is in its destiny... |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 08.09.2003, 07:44 Titel: |
|
|
Was für einen Typ hat denn lpSurface? Ist das Surface auch 32 Bit?
C. |
|
Nach oben |
|
|
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 08.09.2003, 12:33 Titel: |
|
|
Ja, ist auch 32-Bit. _________________ The source of all power is in its destiny... |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 08.09.2003, 12:47 Titel: |
|
|
Hast du mal einen Pixel gelesen und geschaut, ob der Wert sinnvoll ist. Probiere doch mal den Surface mit Rot, danach mit Grün und dann mit Blau zu füllen. Geht das?
C. |
|
Nach oben |
|
|
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 08.09.2003, 13:51 Titel: |
|
|
Meinst du jetzt, dass ich sie erst mit Rot Grün und dann Blau mit einem Alphawert füllen soll, sodass die Surface danach die Farbe Weiß hat oder so?
Egal, ob ich D3DCOLOR_XRGB oder _ARGB verwende, am Schluss habe ich immer nur ne blaue Surface. Hab den Alphawert mal auf 0,128 und 255 gehabt. _________________ The source of all power is in its destiny... |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 08.09.2003, 13:55 Titel: |
|
|
Genau sowas wollte ich wissen. Ev. sind die Farben BGRA angeordnet, muss du mal testen... |
|
Nach oben |
|
|
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 08.09.2003, 14:10 Titel: |
|
|
Nein die sind anscheinend ARGB angeordnet. Kann es irgendwie sein, dass man den Alphakanal erst irgendwo freischalten muss? _________________ The source of all power is in its destiny... |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 08.09.2003, 14:16 Titel: |
|
|
Wenn du Direct3D benutzt dann ja, steht hier irgendwo im Forum, SetRenderState(..).
C. |
|
Nach oben |
|
|
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 08.09.2003, 15:00 Titel: |
|
|
Hab im Forum und in der MSDN nun gesucht und hab zwar die zwei Aufrufe gefunden:
lpD3DDevice->SetRenderState(D3DRS_ALPHATESTENABLE,true);
lpD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,true);
aber keiner von beiden bringt die erwartete Wirkung! _________________ The source of all power is in its destiny... |
|
Nach oben |
|
|
X-FILE Super JLI'ler
Anmeldedatum: 12.07.2003 Beiträge: 349
Medaillen: Keine
|
Verfasst am: 08.09.2003, 15:40 Titel: |
|
|
Hoi,
also vielleicht hab ichs ueberlesen oder nicht richtig verstanden, also wenns so ist, bitte ignorieren. Aber WAS genau funktioniert denn oder auch nicht? Du bekommst bei Alphablending nur ne blaue Flaeche oder wie und haettest gerne Halbtransparenz?
Zuletzt bearbeitet von X-FILE am 08.09.2003, 15:43, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 08.09.2003, 15:42 Titel: |
|
|
Ich versuche halbtransparente Pixel auf eine Surface zu malen. That's it. _________________ The source of all power is in its destiny... |
|
Nach oben |
|
|
X-FILE Super JLI'ler
Anmeldedatum: 12.07.2003 Beiträge: 349
Medaillen: Keine
|
Verfasst am: 08.09.2003, 15:43 Titel: |
|
|
Ok dann hab ichs richtig verstanden. Wann renderst du denn die Surface? Sind noch andere Objekte im Spiel?
So hab grad noch mal nachgesehen. Ich hatte das Problem einmal bei einer Surface und bei nem Billboard mit Textur. Da passierte das Gleiche was du beschreibst. Fehler war die Renderreihenfolge. Also solltest du da mal umstellen vielleicht? Just a try....
Zuletzt bearbeitet von X-FILE am 08.09.2003, 15:47, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 08.09.2003, 15:46 Titel: |
|
|
Naja zwischen BeginScene und EndScene
und es sind keine weiteren Objekte im Spiel. _________________ The source of all power is in its destiny... |
|
Nach oben |
|
|
X-FILE Super JLI'ler
Anmeldedatum: 12.07.2003 Beiträge: 349
Medaillen: Keine
|
Verfasst am: 08.09.2003, 15:49 Titel: |
|
|
Hmm dann...
Aber sag mal. Nen Mischungsverhaeltniss hast du schon angegeben, oder?
Code: |
m_lpD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
m_lpD3DDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
m_lpD3DDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);
|
Sollte bei dir taugen...
Man editier ich heute wieder... |
|
Nach oben |
|
|
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 08.09.2003, 16:30 Titel: |
|
|
Danke.
Funktioniert leider aber auch nicht.
Genausowenig wie das funktioniert:
Code: |
lpD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
lpD3DDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCCOLOR);
lpD3DDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCCOLOR);
|
_________________ The source of all power is in its destiny... |
|
Nach oben |
|
|
|