Color Key setzen bei DirectX 7?
-
Hallo,
Ich weiß nen Color Key in DirectX9 zu setzen ist mit D3DXCreateTextureFromFileEx ziemlich leicht.
Aber da ich noch auf DirectX7 bin (will aber nicht mehr Draw benutzen) und nicht alles nach DirectX9 umschreiben will hab ich damit meine Probleme da ich die Funktion ja beim 7er noch nicht habe.
Also ich will eben ne Texture haben bei der ne bestimmte Farbe (hier Magenta ;)) nicht gezeichnet wird.Habe schon folgendes ausprobiert aber es wird eben die Farbe nicht auf transparent gesetzt...:
LPDIRECTDRAWSURFACE7 Texture=NULL; Texture=CreateTexture(lpDevice,"bitmaps\\bitmap.bmp"); DDCOLORKEY key; //color key setzen key.dwColorSpaceLowValue = 0xffff00ff; key.dwColorSpaceHighValue = 0xffff00ff; Texture->SetColorKey(DDCKEY_SRCBLT,&key); //------------------- //rendern: lpDevice->SetRenderState(D3DRENDERSTATE_ALPHABLENDENABLE,TRUE); lpDevice->SetRenderState(D3DRENDERSTATE_SRCBLEND,D3DBLEND_SRCALPHA); lpDevice->SetRenderState(D3DRENDERSTATE_DESTBLEND,D3DBLEND_INVSRCALPHA); lpDevice->SetTexture(0,Texture); D3DLVERTEX Mesh[4]; Mesh[0] = D3DLVERTEX( D3DVECTOR(70.0f,60.0f, 0.0f ), 0x00000000, 0, 0.0f, 1.0f); Mesh[1] = D3DLVERTEX( D3DVECTOR(70.0f, 204, 0.0f ), 0x00000000, 0, 0.0f, 0.0f ); Mesh[2] = D3DLVERTEX( D3DVECTOR( 204,60.0f, 0.0f ), 0x00000000, 0, 1.0f, 1.0f ); Mesh[3] = D3DLVERTEX( D3DVECTOR( 204, 204, 0.0f ), 0x00000000, 0, 1.0f, 0.0f ); Mesh[0].color = Mesh[1].color = Mesh[2].color = Mesh[3].color = D3DRGBA( 1.0f, //r 1.0f, //g 1.0f, //b 1.0f); //alpha lpDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, D3DFVF_LVERTEX, Mesh, 4, 0 ); lpDevice->SetRenderState(D3DRENDERSTATE_ALPHABLENDENABLE,FALSE); lpDevice->SetRenderState(D3DRENDERSTATE_SRCBLEND,D3DBLEND_ONE); lpDevice->SetRenderState(D3DRENDERSTATE_DESTBLEND,D3DBLEND_ZERO);
Wäre für Hilfe dankbar...
-
* PUSH *
(des Problem kann doch nett so schwierig sie???)
-
-
Ich will aber kein Alphakanal ich will einen Colorkey
-
Ach scheiß auf DirectX 7. Jetzt wirds auch für mich Zeit aufs 9er umzusteigen...
Ist der Umstieg schwer? Was habt ihr zum Beispiel mit der d3dutil.cpp gemacht. Die scheint ja im 9er nicht mehr drinn zu sein.
-
> Ich will aber kein Alphakanal ich will einen Colorkey
mit einen alphakanal kann man das gleiche wie mit einem colorkey machen und mehr
> Ist der Umstieg schwer?
nö - eigentlich alles einfacher geworden
> Was habt ihr zum Beispiel mit der d3dutil.cpp gemacht
wir haben sie durch D3DX ersetzt