2010-09-02 35 views
-1

Comment est-ce que je peux alphablend seulement certaines parties d'une texture dans DX 9? Par exemple, les calques dans Photoshop (ou tout autre programme de retouche photo prenant en charge les calques).
Vous pouvez dessiner quelque chose dans un calque (fond rempli d'alpha), puis placer le calque sur l'image originale (dessiner la texture sur l'écran) qui mène à l'image originale + SEULEMENT les choses que j'ai dessiné dans le calque.Comment est-ce que je peux alphablend seulement certaines parties d'une texture dans DX 9?

Oui, je sais que mon anglais n'est pas très "brillant".

Merci beaucoup, à l'avance!

P.S. L'arrière-plan de ma texture est rempli d'alpha.

Répondre

0

Vous avez donc configuré l'alpha sur la texture que vous souhaitez superposer de telle sorte que 0 soit transparent (c'est-à-dire montre ce qui est en dessous) et 1 est opaque (c'est-à-dire montre la texture de superposition)?

Si oui, alors vous avez juste besoin de mettre en place un simple mode de fusion:

pDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); 
pDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA); 
pDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE); 

Assurez-vous de dessiner l'arrière-plan d'abord! Notez également que les valeurs comprises entre 0 et 1 représentent une interpolation linéaire entre l'arrière-plan et la texture de superposition.

+0

Je alphablending permis et a fait tout ce que vous avez dit, mais il semble que chaque fois que je mets ces états: rendre pDevice-> SetRenderState (D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); pDevice-> SetRenderState (D3DRS_SRCBLEND, D3DBLEND_INVSRCALPHA); Les textures sont affichées tout en noir. Oh, et en passant, mon jeu est 2D, et je me demandais toute la journée si le RHW dans la FVF que j'utilise a quelque chose à voir avec les problèmes que j'ai. Merci encore, d'avance! Oh, et j'espère que je n'ai pas abusé des commentaires. – C4theWin

+0

De quelle couleur est l'arrière-plan? A quoi correspondent les couleurs de sommet? – Goz

+0

La couleur d'arrière-plan est D3DCOLOR_XRGB (150, 200, 255). Les couleurs de vertex sont toutes D3DCOLOR_ARGB (255, 255, 255, 255), bien que j'aie essayé quelques autres couleurs aussi. – C4theWin