alpha blending : faire apparaitre une image progressivement [Direct3D] - Programmation
Marsh Posté le 25-06-2002 à 14:30:00
ReplyMarsh Posté le 25-06-2002 à 14:38:46
Pas bien compliqué avec Allegro:
Code :
|
Pas testé mais y a pas trop de raison. Au moins, tu vois que une bonne librairie, ca a du bon, non?
Marsh Posté le 25-06-2002 à 14:43:36
Tu sais lire un titre de topic?
Marsh Posté le 25-06-2002 à 14:45:02
Bien sur, c'était juste pour t'ennerver que j'ai fais tout ça!
T'as vu mon mail ou pas alors?
Marsh Posté le 25-06-2002 à 14:48:21
ReplyMarsh Posté le 25-06-2002 à 14:48:56
Connais pas du tout D3DXSprite, mais en D3D normal tu a le textureFactor qui correspond a ce que tu veux faire ( tu le set avec setRenderState)
ensuite c'etait question de mettre les stageState correct (faire alphaArg1 = textureFactor et alpha.op = useArg1 ) et d'activer l'alphaBlending (setRenderState)
sais pas si ca va t'aider, mais bon.........
Marsh Posté le 25-06-2002 à 15:53:34
tu ne passes pas une couleur diffuse en RGBA
dans ton format de vertex?
A mon avis le facteur que tu cherches c'est l'alpha du vertex
modulé par l'alpha de texture (s'il existe).
LeGreg
Marsh Posté le 25-06-2002 à 16:06:39
chrisbk a écrit a écrit : Connais pas du tout D3DXSprite, mais en D3D normal tu a le textureFactor qui correspond a ce que tu veux faire ( tu le set avec setRenderState) |
je crois que texturefactor c'est overkill
et je ne suis pas sur que ce soit bien utilisable
sur des hardware un peu ancien
LeGreg
Marsh Posté le 25-06-2002 à 16:21:31
legreg a écrit a écrit : je crois que texturefactor c'est overkill et je ne suis pas sur que ce soit bien utilisable sur des hardware un peu ancien LeGreg |
comment cela, overkill ?
Perso pour faire disparaitre un objet progrssivement, c le tfactor que j'utilise
Marsh Posté le 25-06-2002 à 16:31:49
non ok ca marche,
je me demandais juste comment
c'etait supporté par les hardwares?
tu as fait des tests?
LeGreg
Marsh Posté le 25-06-2002 à 16:34:22
legreg a écrit a écrit : non ok ca marche, je me demandais juste comment c'etait supporté par les hardwares? tu as fait des tests? LeGreg |
alors la, je te concede que je n'en sais rien du tout
Bon,partant du principe qu'il etait deja la dans DX7, on peut dire que les geforce le font En dessous, no idea, mais je suppose que la TnT oui
(enfin quoi, y'a meme pas a interpoler ni rien du tout, c juste une bete constante a utiliser partout )
Marsh Posté le 25-06-2002 à 16:44:02
legreg a écrit a écrit : tu ne passes pas une couleur diffuse en RGBA dans ton format de vertex? A mon avis le facteur que tu cherches c'est l'alpha du vertex modulé par l'alpha de texture (s'il existe). |
Bien joué, c'était ca
Maintenant comme c'est bôôôôôôôôôô!!!
Marsh Posté le 25-06-2002 à 17:48:24
Reply
Marsh Posté le 25-06-2002 à 13:08:10
Comment est il possible de faire apparaitre une image progressivement? Au début, qu'elle soit completement transparente et qu'a la fin completement opaque. Je pense pouvoir faire ca en adaptant progressivement la composante alpha de chaque texel, mais ca implique de locker la surface pour aller écrire dedans et ca prend du temps.
Mais j'ai trouvé ca:
[citation]
There are two ways to take advantage of alpha values. First, you can create your source graphics with an alpha component, allowing you to make a single bitmap with varying degrees of transparency throughout the image. Many graphics editors support alpha values, and you'll need to save in a file format that stores this data (.PNG or .TGA, for example). When you load your image into a texture which has an alpha value in its format, the alpha information is maintained. Then, when you use ID3DXSprite::Draw(), the alpha value is used to decide how to blend your image with the background graphics. The second way to take advantage of alpha values is to use the Color parameter of the ID3DXSprite::Draw() function, which "modulates" the color and alpha channels by the value provided. Ordinarily, you would specify 0xFFFFFFFF for this value to get a standard blit. By changing this to 0x80FFFFFF, you will draw your image at 50 percent transparency. It is also possible to change the other bytes to affect the color of your drawn image, making it very easy and fast to draw a single object in a variety of color shades.
[/citation]
Manifestement ID3DXSprite arrive a faire ca, comment fait-il?
J'ai trouvé ca dans le SDK de DirectX :
FinalColor = TexelColor × SourceBlendFactor + PixelColor × DestBlendFactor
A supposer que ID3DXSprite n'utilise pas lock, c'est donc qu'il existe un autre facteur , tel que :
FinalColor = TexelColor × SourceBlendFactor × facteur + PixelColor × DestBlendFactor
Comment modifier ce facteur, s'il existe?
Message édité par Ace17 le 25-06-2002 à 14:43:23