Page 1 sur 1

[BUG ?]sprite (et directX)

Publié : ven. 20/sept./2013 11:56
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

Re: [BUG ?]sprite (et directX)

Publié : ven. 20/sept./2013 19:50
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

@+

Re: [BUG ?]sprite (et directX)

Publié : ven. 20/sept./2013 20:05
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

Re: [BUG ?]sprite (et directX)

Publié : sam. 21/sept./2013 9:36
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 ?

Re: [BUG ?]sprite (et directX)

Publié : sam. 21/sept./2013 11:30
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.

Re: [BUG ?]sprite (et directX)

Publié : ven. 27/sept./2013 15:34
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.

Re: [BUG ?]sprite (et directX)

Publié : sam. 28/sept./2013 12:05
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