PDA

Voir la version complète : Sprite


Mickael
18/11/2005, 23h51
Salut,
j'ai fais une class DE_Sprite qui utilise ID3DXSprite.

Mais voila, je me pose une question :D

Serais-ce pas mieu de faire une class utilisant DE_Texture (ma class de texture) et DE_VertexColoredTextured (ma struct de vertex coloré/texturé) ?

Quelle sont les avantages a utilisé ID3DXSprite ?

Maintenant la partie probleme :

ma class utilise ID3DXSprite pour le moment.Tout marche bien mais je n'arrive pas a faire de la transparence.Pourtant dans la doc j'ai vu que ca met tout seul que la couleur noir est transparente ... pourtant marche pas :p

Merci de vos réponses et de vos aides

Mickael

Loulou
19/11/2005, 10h54
Pourtant dans la doc j'ai vu que ca met tout seul que la couleur noir est transparente
Je ne sais pas où tu as vu ça, mais il n'y a rien de tel par défaut. Tu peux préciser ?

Mickael
19/11/2005, 11h47
dans begin :


Remarks
This method must be called from inside a BeginScene . . . EndScene sequence. Begin cannot be used as a substitute for either BeginScene or BeginScene.

This method will set the following states on the device.

Render States:

Type (D3DRENDERSTATETYPE) Value
D3DRS_ALPHABLENDENABLE TRUE
D3DRS_ALPHAFUNC D3DCMP_GREATER
D3DRS_ALPHAREF 0x00
D3DRS_ALPHATESTENABLE AlphaCmpCaps
D3DRS_BLENDOP D3DBLENDOP_ADD
(...)


De plus mon begin a le flag : D3DXSPRITE_ALPHABLEND :


D3DXSPRITE_ALPHABLEND Enables alpha blending with D3DRS_ALPHATESTENABLE set to TRUE (for nonzero alpha). D3DBLEND_SRCALPHA will be the source blend state, and D3DBLEND_INVSRCALPHA will be the destination blend state in calls to SetRenderState. See Alpha Blending State. ID3DXFont expects this flag to be set when drawing text.

Loulou
19/11/2005, 12h08
dans begin :
[...]
Rien n'indique un noir comme couleur de transparence. Si tu parles de l'alpha ref, alors ça n'a rien à voir comme je te l'avais déjà dit ; c'est la valeur de référence pour les tests alpha (si activés).

De plus mon begin a le flag : D3DXSPRITE_ALPHABLEND :
[...]
Ce que cela indique, c'est que tu es en mode SRCALPHA / INVSRCALPHA. Donc que c'est le canal alpha de ta texture qui servira de facteur de transparence.

ShadowTzu
19/11/2005, 12h17
raa moi aussi je lui est dis :)
tu confond l'alpha blend avec l'alpha test.
pour définir la couleur clef transparente c'est ici (dx managed):

Public Shared Function FromFile(ByVal device As Microsoft.DirectX.Direct3D.Device,
ByVal srcFile As String,
ByVal width As Integer,
ByVal height As Integer,
ByVal mipLevels As Integer,
ByVal usage As Microsoft.DirectX.Direct3D.Usage,
ByVal format As Microsoft.DirectX.Direct3D.Format,
ByVal pool As Microsoft.DirectX.Direct3D.Pool,
ByVal filter As Microsoft.DirectX.Direct3D.Filter,
ByVal mipFilter As Microsoft.DirectX.Direct3D.Filter,
ByVal colorKey As Integer) As Microsoft.DirectX.Direct3D.Texture


et enssuite tu active l'alpa test.

Mickael
19/11/2005, 15h32
C'est réglé l'erreur venait de DE_Texture :)

ShadowTzu
19/11/2005, 15h54
oki, ... triple zero :D

Mickael
19/11/2005, 15h55
Et oui tu etait déjà au courrant toi :p