fonctionnement de displayAlphaSprite()

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
cdurand
Messages : 14
Inscription : dim. 12/févr./2012 11:38

fonctionnement de displayAlphaSprite()

Message par cdurand »

Bonjour, c'est encore moi.

Je voudrais utiliser la fonction displayAlphaSprite(), mais je ne trouve aucun exemple sur le net.
J'ai sauvegardé mon image en bmp 256 niveaux de gris (8 bits) comme demandé (avec Photofiltre free).

Je charge l'image avec
LoadSprite(#PB_Any,"mask_256_ng.bmp",#PB_Sprite_Alpha)

Mais déjà la fonction loadSprite me renvoie 0, ce qui ne semble pas normal.

Si je charge sans option, loadSprite((#PB_Any,"mask_256_ng.bmp") fonctionne, mais impossible d'utiliser displayAlphaSprite() alors...

Quelqu'un aurait-il une explication ?
Faut-il utiliser un autre logiciel que Photofiltre (j'ai essayé avec Paint ou The Gimp mais sans résultat) ?
Est-ce mon masque qui ne convient pas ?

Le zip est là :

https://rapidshare.com/files/1237506566 ... Sprite.zip

Merci pour votre aide.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: fonctionnement de displayAlphaSprite()

Message par Backup »

Le sprite est créé avec le support de l'alpha-channel, le format d'image doit le gérer
t'es sur que le BMP gere l'alha ??

essaye avec un PNG !
(n'oublie pas d'ajouter "UsePNGImageDecoder()" dans ton code ) ;)
cdurand
Messages : 14
Inscription : dim. 12/févr./2012 11:38

Re: fonctionnement de displayAlphaSprite()

Message par cdurand »

J'ai cru comprendre que displayAlphaSprite() n'a aucun rapport avec la couche alpha d'une image, mais "simule" une couche alpha avec les niveaux de gris d'une image bmp 8 bits. Ca permettrait à mon sens d'afficher un masque coloré (en relation avec ChangeAlphaIntensity() ) avec différents niveaux de transparence (c'est comme ça que je le vois).
Pour les images png avec couche alpha, il faut apparemment utiliser les sprite3D. Mais je ne cherche pas ce genre de fonctionnalité pour mon appli.

Quelqu'un aurait-il un tuto utilisant displayAlphaSprite() ?

Merci.
cdurand
Messages : 14
Inscription : dim. 12/févr./2012 11:38

Re: fonctionnement de displayAlphaSprite()

Message par cdurand »

D'ailleurs le manuel spécifie bien :
#PB_Sprite_Alpha : Le sprite est au format 8 bits (256 couleurs) en niveau de gris utilisé par DisplayAlphaSprite(), DisplayShadowSprite() ou DisplaySolidSprite()
Peut être que Photofiltre ne fournit pas le bon format...
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: fonctionnement de displayAlphaSprite()

Message par Ar-S »

Une image BMP peut être enregistrée en mode 8bits (couleur indexée) et la tienne a l'air valide de ce coté.
Le coté transparence Alpha du Png n'entre pas en jeu ici.

Code : Tout sélectionner

InitSprite()

OpenWindow(0,0,0,800,600,"displayAlphaSprite")
OpenWindowedScreen(WindowID(0),0,0,800,600,0,0,0)

spriteO =LoadSprite(1,"mask_256_ng.bmp")
spriteA = LoadSprite(2,"mask_256_ng.bmp",#PB_Sprite_Alpha)

;- test/
If spriteO = 0 Or spriteA = 0
  Debug spriteO : Debug spriteA
EndIf
;- /test


Repeat
  FlipBuffers()
  ClearScreen(RGB(0,128,0))
  DisplaySprite(1,100,100)
  DisplayAlphaSprite(2,100,100) 
Until WindowEvent() = #PB_Event_CloseWindow
FreeSprite(1) 
FreeSprite(2) 

j'ai essayé de compléter un peu mais sans succès. Les amateurs de 2D vont surement te répondre rapidement.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: fonctionnement de displayAlphaSprite()

Message par comtois »

Tu as un exemple dans le répertoire PureBasic\Examples\Sources\Sprite_SpecialFX.PB

J'ai testé mais je ne voyais rien de spécial. Finalement en sélectionnant le sous système Directx7 dans les options du compilateur, j'ai vu fonctionner la commande DisplayAlphaSprite()
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
cdurand
Messages : 14
Inscription : dim. 12/févr./2012 11:38

Re: fonctionnement de displayAlphaSprite()

Message par cdurand »

Merci pour l'exemple !

Par contre, je ne vois pas où modifier la version de DirectX dans les options de compilation...

Je dois être miraud 8O
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: fonctionnement de displayAlphaSprite()

Message par comtois »

Depuis le menu 'compilateur' tu vas dans 'options du compilateur...' et tu verras la fenêtre ci-dessous, et ensuite dans Bibliothèque sous-système tu tapes le texte Directx7 , tu peux aussi choisir opengl selon ce que tu veux faire.
Image
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
cdurand
Messages : 14
Inscription : dim. 12/févr./2012 11:38

Re: fonctionnement de displayAlphaSprite()

Message par cdurand »

Merci.
Effectivement, sous DirectX7 on voit des sprites. Par contre c'est drôlement lent !

Pour l'exemple que j'ai fourni plus haut, il y a des effets désastreux de décalage sur mon AlphaSprite, mais il faudrait que je compare mon image avec celle de l'exemple PB.
Répondre