[BUG ?]sprite (et directX)

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

[BUG ?]sprite (et directX)

Message par blendman »

salut

Je crois avoir trouvé 3 bugs avec les sprites :
- drawtext sur un sprite ne s'efface pas correctement
- zoomsprite et clipsprite bug
- spriteBlendingMode bug avec directX.

Pour le 3ème :
Sur la 5.11, spriteblenddingmode() fonctionne très bien avec directX, mais sur la 5.20, plus rien ne fonctionne (sur mon ordi en tout cas) : le fait de changer les paramètres ne donnent presque rien comme changement.

Voici le code pour tester :
If InitSprite() = 0 Or InitKeyboard() = 0 Or UsePNGImageDecoder() = 0
End
EndIf

If OpenWindow(0, 0,0,800,600,"Zoomsprite bug",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(0), 0,0,800,600)

LoadSprite(0, "loli.png", 32|#PB_Sprite_AlphaBlending )
CopySprite(0,2,32|#PB_Sprite_AlphaBlending)

CreateSprite(1,150,64,32|#PB_Sprite_AlphaBlending )
w = SpriteWidth(0)
h = SpriteHeight(0)

Repeat

event = WindowEvent()

ClearScreen(RGB(120,120,120))

If x <1000
x+1
Else
x = 0
EndIf

; BUG N°1 avec le zoom sprite et clipsrite
ClipSprite(2, 0, 0, x, x/8)
ZoomSprite(2, w+2, h+2)
SpriteBlendingMode(0,0)
DisplayTransparentSprite(2, 150, 100)

; BUG N°2 : le spriteblendingmode ne fonctionne pas en directX
SpriteBlendingMode(b1,b2)

DisplayTransparentSprite(0, 50, 100)


; BUG N°3 : avec le drawtext
If StartDrawing(SpriteOutput(1))
DrawingMode(#PB_2DDrawing_AlphaChannel)
Box(0,150,64,RGBA(0,0,0,0))
DrawingMode(#PB_2DDrawing_AlphaBlend)
DrawText(0,0,"Blendmode : " + Str(b1)+"/"+Str(b2)) ;<-------- ici le 2ème chiffre n'est pas effacé en totalité
DrawText(0,20,"Blendmode : " + Str(b1)+"/"+Str(b2) +" ");<-- ici le 2ème chiffre est totalement effacé
DrawText(0,40,"")
StopDrawing()
EndIf

SpriteBlendingMode(5,6)
DisplayTransparentSprite(1, 0, 0)


FlipBuffers()

If ExamineKeyboard()

If KeyboardReleased(#PB_Key_Up)
If b1 < 10
b1 + 1
Else
b1 =0
EndIf
EndIf

If KeyboardReleased(#PB_Key_Down)
If b2 < 10
b2 + 1
Else
b2 =0
EndIf
EndIf

EndIf

Until event = #PB_Event_CloseWindow ;KeyboardPushed(#PB_Key_Escape)

Else
MessageRequester("Error", "Can't open a 800*600 - 32 bit screen !", 0)
EndIf

voici l'image que j'utilise, mais vous pouvez mettre n'importe quel png à la place, ça marche aussi :

Image
Avatar de l’utilisateur
Eric
Messages : 79
Inscription : dim. 08/juil./2007 21:38
Localisation : Nord
Contact :

Re: [BUG ?]sprite (et directX)

Message par Eric »

Salut,

Bug1 le clipsprite et zoom fonctionne

Par j'ai bien les bugs 2 & 3

Ma conf: I7 + 8Go de Ram + GTX580 avec driver Geforce 327.23

@+
Avatar de l’utilisateur
Eric
Messages : 79
Inscription : dim. 08/juil./2007 21:38
Localisation : Nord
Contact :

Re: [BUG ?]sprite (et directX)

Message par Eric »

apparemment cela fonctionne sous Directx11 pour le spriteblendmode.

Code : Tout sélectionner

If InitSprite() = 0 Or InitKeyboard() = 0 Or UsePNGImageDecoder() = 0
End
EndIf

If OpenWindow(0, 0,0,800,600,"Zoomsprite bug",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(0), 0,0,800,600)

LoadSprite(0, "loli.png", #PB_Sprite_AlphaBlending )
CopySprite(0,2,#PB_Sprite_AlphaBlending)

CreateSprite(1,150,64,#PB_Sprite_AlphaBlending )
w = SpriteWidth(0)
h = SpriteHeight(0)

Repeat

event = WindowEvent()

ClearScreen(RGB(120,120,120))

If x <1000
x+1
Else
x = 0
EndIf

; BUG N°1 avec le zoom sprite et clipsrite
ClipSprite(2, 0, 0, x, x/8)
ZoomSprite(2, w+2, h+2)
SpriteBlendingMode(0,0)
DisplayTransparentSprite(2, 150, 100)

; BUG N°2 : le spriteblendingmode ne fonctionne pas en directX
SpriteBlendingMode(b1,b2)

DisplayTransparentSprite(0, 50, 100,255)


; BUG N°3 : avec le drawtext
If StartDrawing(SpriteOutput(1))
DrawingMode(#PB_2DDrawing_AlphaChannel)
Box(0,0,150,64,RGBA(0,0,0,0)) ;- il y avait une erreur dans les coordonnées
DrawingMode(#PB_2DDrawing_AlphaBlend)
DrawText(0,0,"Blendmode : " + Right(" "+Str(b1),2)+"/"+Right(" "+Str(b2),2)) ;<-------- ici le 2ème chiffre n'est pas effacé en totalité
DrawText(0,20,"Blendmode : " +Right(" "+Str(b1),2)+"/"+Right(" "+Str(b2),2) +" ");<-- ici le 2ème chiffre est totalement effacé
DrawText(0,40,"")
StopDrawing()
EndIf

SpriteBlendingMode(5,6)
DisplayTransparentSprite(1, 0, 0)


FlipBuffers()

If ExamineKeyboard()

If KeyboardReleased(#PB_Key_Up)
If b1 < 10
b1 + 1
Else
b1 =0
EndIf
EndIf

If KeyboardReleased(#PB_Key_Down)
If b2 < 10
b2 + 1
Else
b2 =0
EndIf
EndIf

EndIf

Until event = #PB_Event_CloseWindow ;KeyboardPushed(#PB_Key_Escape)

Else
MessageRequester("Error", "Can't open a 800*600 - 32 bit screen !", 0)
EndIf
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: [BUG ?]sprite (et directX)

Message par blendman »

Eric a écrit :Bug1 le clipsprite et zoom fonctionne
Ma conf: I7 + 8Go de Ram + GTX580 avec driver Geforce 327.23
Tu es sous quel OS ?

Quand tu dis que ça fonctionne, cela signifie bien que la surface s'agrandit en même temps que le zoom ?

Car chez moi, la taille du sprite reste identique (entière) et on voit le zoom dessus qui lui est clipé.

Pour le bug spriteblendingmode : sur mon ordi (window 8 / packard bell, directx 11), chez moi, ça bug.
Comment utiliser directX11 , car si je compile en mettant directx11 dans les options de compilation, ça ne marche pas ?
Avatar de l’utilisateur
Eric
Messages : 79
Inscription : dim. 08/juil./2007 21:38
Localisation : Nord
Contact :

Re: [BUG ?]sprite (et directX)

Message par Eric »

Je suis sur Windows 7 x64 ultimate.

Oui, La surface s'agrandie en même temps que le zoom.

Chez moi, pour le spriteblendmode c'est avec l'option sous système du compilateur.

Voila pour les précisions.
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: [BUG ?]sprite (et directX)

Message par blendman »

J'ai remarqué qu'en inversant :

Code : Tout sélectionner

ClipSprite(2, 0, 0, x, x/8)
ZoomSprite(2, w+2, h+2)
par

Code : Tout sélectionner

ZoomSprite(2, w+2, h+2)
ClipSprite(2, 0, 0, x, x/8)
On n'a plus le bug ^^. c'est donc une feature et pas un bug :).
Pour le blendingmode, j'ai posté sur le forum anglais.

Pour le texte, je ne sais pas si c'est un bug ou pas.
Avatar de l’utilisateur
Eric
Messages : 79
Inscription : dim. 08/juil./2007 21:38
Localisation : Nord
Contact :

Re: [BUG ?]sprite (et directX)

Message par Eric »

Chez moi, sous DirectX11 et si j'inverse de position dans le programme, j'ai un rectangle noir qui s'allonge verticalement très lentement.
Et en plus, le personnage de gauche est entièrement noir
Sous DirectX9, si je conserve l'inversion, je n'ai que le clip qui fonctionne verticalement.
par contre, je met le zoom avant le clip pas de problème.

Et aussi, Spriteblendmode fonctionne avec DirectX11 et pas avec DirectX9.

Cordialement
Eric
Répondre