Bild mit einer Farbe flashen (GammaRamp ??)
-
Hallo allerseits
Ich bin schon seit längerem dabei eine 2D-Engine in DX9 zu coden. Gerade jetzt versuche ich ein paar Effekte einzubauen, wie zum Beispiel den Bildschirm zu flashen wie z.b. in CounterStrike, wenn man eine FlashGranate abbekommt.
Wie kann man sowas realisieren. Hab schon versucht, wenn alles fertig gerendert ist, einfach einen Surface mit einem AlphaValue von z.b. 125 drüberzulegen, was aber nicht funktioniert, weil der Surface immer mit Alpha 255 angezeigt wird (keine Ahnung wieso)
Habs auch versucht indem ich die GammaRamp verstellt habe, was aber total auf die Performance geht! Wenn ich da die GammaRamp so alle 20ms verstelle, damit das noch so halbwegs flüssig "flashed" sinkt die FrameRate ins bodenlose ....Also wie kann man sowas machen??
Vielleicht mit einem Shader

-
mit alphablending bist du imho schon auf dem richtigen weg
wie mans benutzt musst du allerdings selbst herausfinden

-
lol
das hilft mir nicht
-
wenn man das Prinzip von Alphablending verstanden (http://turing.fh-landshut.de/~jamann/Alphablending.html) hat, dann kann das doch nicht so schwer sein die richtigen Befehle in einer gut dokumentieren API zu finden - such mal nach beispielen für blending + d3d - da müßte es eigentlich einiges geben
-
Wünsche auch viel Glück beim Alphavalue setzen, sollte der richtige Weg sein.
Bye, TGGC (Wähle deine Helden)
-
Jo, das mit dem AlphaValue hab ich eh verstanden. Bei Sprites funktioniert das ja auch ganz gut, indem ich einfach bei der ModualtionColor einen AlphaValue setze.
Nur ich weiß nicht, wie ich das komplette "Bild" jetzt z.b. heller machen kann.
Muss ich da wirklich jedes einzelne Sprite verändern??
Wie gesagt, hab zuerst versucht einen Surface mit 125,255,0,0 zu füllen und dann über das fertig gerendete Bild drüberzulegen, aber das funktioniert irgendwie nicht .. da ist dann einfach das ganze Bild komplett rot, wie wenn ich Alpha 255 angegeben hätte.
Jetzt würde ich halt gerne Wissen, wie man das sonst machen kann .....
-
Du hast das Alphablending auch aktiviert?
-
Aktivieren?
Wie das??
-
Such mal nach SetRenderState im Zusammenhang mit Alphablending. Google ist dein Freund

-
Hab jetzt mal das versucht :
m_lpD3DDevice->SetRenderState (D3DRS_ALPHABLENDENABLE, true); m_lpD3DDevice->SetRenderState (D3DRS_DESTBLEND, D3DBLEND_ONE); m_lpD3DDevice->SetRenderState (D3DRS_SRCBLEND, D3DBLEND_ONE);nachdem hab ich wieder versucht einen Surface mit 125,255,0,0 über die gerenderte Scene zu legen .... wieder alles rot

Kann ein Surface keinen Alpha-Value haben??
-
'nen Surface kann zumindest einen Alphakanal haben.
Bye, TGGC (Wähle deine Helden)
-
Nett das du mir auch gleich sagst, wie ich den verwende ....

-
Xatian schrieb:
Nett das du mir auch gleich sagst, wie ich den verwende
Wie kommst du darauf, das ich dir das jetzt sage? Hast doch selber Augen um Lesen und Kopf zum Denken.
Bye, TGGC (Wähle deine Helden)