Problème de sprites avec PB 5.30
- falsam
- Messages : 7317
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Problème de sprites avec PB 5.30
Après plusieurs tests, il apparaît que la gestion des sorites pose problème avec la version 5.30 ET la version 5.23.
Mon code étant trop long pour localiser le souci, je vais en faire un autre plus simple et court.
Mon code étant trop long pour localiser le souci, je vais en faire un autre plus simple et court.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
- majikeyric
- Messages : 602
- Inscription : dim. 08/déc./2013 23:19
- Contact :
- falsam
- Messages : 7317
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Problème de sprites avec PB 5.30
J'ai l'impression que c'est la fonction ClipSprite() suivi de DisplayTransparentSprite() qui provoque cet artefact à l'écran.
@majikeyric: Tu peux dire si c'est le cas dans ton code ?
@majikeyric: Tu peux dire si c'est le cas dans ton code ?
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
- falsam
- Messages : 7317
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Problème de sprites avec PB 5.30
Voila un code de test que vous pouvez enregistrer et exécuter avec la version 5.22 puis 5.23 et enfin 5.30.
■ Ce code affiche 150 oiseaux. Vous aurez besoin de cette image dans le même dossier que le code.

Exécuté avec la version :
5.22 - Pas d'artéfact
5.23 - Artefact.
5.30 - Artefact.
■ L'artefact en image: Des triangles sur les ailes.

■ Ma carte vidéo est une NVidia
■ Vous pouvez faire un test en choisissant le rang à animer. Modifier la variable RowAnim = 0 par RowAnim = 3 par exemple.
■ le dossier compressé contient l'image et le code.
http://s242132022.onlinehome.fr/Downloa ... tefact.zip
■ Ce code affiche 150 oiseaux. Vous aurez besoin de cette image dans le même dossier que le code.

Code : Tout sélectionner
Enumeration
#MainForm
EndEnumeration
Structure Sprite
Sprite.i
x.i
y.i
Animation.i
CurrentFrame.i
FrameWidth.i
FrameHeight.i
FrameMax.i
FrameRate.i
FrameTimeLife.i
EndStructure
Global MaxBirds=150, Dim Bird.Sprite(MaxBirds), RowAnim = 0
Procedure GamePreload()
UsePNGImageDecoder()
;Init birds
For n=0 To MaxBirds
With Bird(n)
\Sprite = LoadSprite(#PB_Any, "bird.png", #PB_Sprite_AlphaBlending)
\x = Random(1024, 0)
\y = Random(600, 0)
\Animation = RowAnim
\CurrentFrame=0
\FrameMax = 4
\FrameWidth = 64
\FrameHeight = 64
\FrameTimeLife = ElapsedMilliseconds()
\FrameRate = Random(130, 50)
EndWith
Next
EndProcedure
Procedure GameUpdate()
For n=0 To MaxBirds
With Bird(n)
ClipSprite(\Sprite, \CurrentFrame * \FrameWidth, \Animation * \FrameHeight, \FrameWidth, \FrameHeight)
DisplayTransparentSprite(\Sprite, \x, \y, 255)
If ElapsedMilliseconds()-\FrameTimeLife > \FrameRate
\FrameTimeLife = ElapsedMilliseconds()
If \CurrentFrame < \FrameMax-1
\CurrentFrame+1
Else
\CurrentFrame=0
EndIf
EndIf
EndWith
Next
EndProcedure
Procedure GameStart()
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
MessageRequester("Error", "Sprite system can't be initialized", 0)
End
EndIf
If OpenWindow(#mainform, 0, 0, 800, 600, "Bug Sprite", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
If OpenWindowedScreen(WindowID(#mainform), 0, 0, 800, 600)
GamePreload()
EndIf
EndIf
Repeat
Repeat
Event = WindowEvent()
Select event
Case #PB_Event_CloseWindow
End
EndSelect
Until event=0
FlipBuffers()
ClearScreen(RGB(0,0,0))
ExamineKeyboard()
ExamineMouse()
GameUpdate()
Until KeyboardPushed(#PB_Key_Escape)
EndProcedure
GameStart()
5.22 - Pas d'artéfact
5.23 - Artefact.
5.30 - Artefact.
■ L'artefact en image: Des triangles sur les ailes.

■ Ma carte vidéo est une NVidia
■ Vous pouvez faire un test en choisissant le rang à animer. Modifier la variable RowAnim = 0 par RowAnim = 3 par exemple.
■ le dossier compressé contient l'image et le code.
http://s242132022.onlinehome.fr/Downloa ... tefact.zip
Dernière modification par falsam le jeu. 07/août/2014 17:44, modifié 1 fois.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
- majikeyric
- Messages : 602
- Inscription : dim. 08/déc./2013 23:19
- Contact :
Re: Problème de sprites avec PB 5.30
Je ne fais pas de clipSprite()...
Dans mon cas c'est le fait d'afficher certains sprites partiellement hors de l'écran qui crée l'artéfact (un mix entre 2 sprites).
Sur le forum anglais Demivec a mis en évidence le bug : http://www.purebasic.fr/english/viewtop ... 92#p450292
Ton "triangle" ne vient pas d'un autre de tes sprites ?
Dans mon cas c'est le fait d'afficher certains sprites partiellement hors de l'écran qui crée l'artéfact (un mix entre 2 sprites).
Sur le forum anglais Demivec a mis en évidence le bug : http://www.purebasic.fr/english/viewtop ... 92#p450292
Ton "triangle" ne vient pas d'un autre de tes sprites ?
- falsam
- Messages : 7317
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Problème de sprites avec PB 5.30
Dans l'exemple que je donne il n'y a qu'un seul sprite dupliqué 150 fois.majikeyric a écrit :Ton "triangle" ne vient pas d'un autre de tes sprites ?
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
- majikeyric
- Messages : 602
- Inscription : dim. 08/déc./2013 23:19
- Contact :
Re: Problème de sprites avec PB 5.30
Chez moi j'ai les même résultats que toi (sauf que je n'ai pas installé la 5.23). J'ai une radeon.
Je voulais dire que peut être le triangle provient d'un morceau "resizé" de l'une des images...
Dans mon cas, il y avait un mix entre le sprite du personnage et le sprite du pilonne qui passe en avant plan (car le pilonne était affiché en dehors de l'écran par DisplayTransparentSprite() )

Je voulais dire que peut être le triangle provient d'un morceau "resizé" de l'une des images...
Dans mon cas, il y avait un mix entre le sprite du personnage et le sprite du pilonne qui passe en avant plan (car le pilonne était affiché en dehors de l'écran par DisplayTransparentSprite() )

Re: Problème de sprites avec PB 5.30
Pour ma part, avec mon code pas de probleme ...
pourtant j'utilise ClipSprite
voir ici :
http://www.purebasic.fr/french/viewtopi ... _procedure
pourtant j'utilise ClipSprite
voir ici :
http://www.purebasic.fr/french/viewtopi ... _procedure
- falsam
- Messages : 7317
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Problème de sprites avec PB 5.30
@majikeyric: J'ai modifié le code pour n'afficher que 9 sprites Comme tu peux le voir sur cette image, il n'y a pas de superposition de sprite et il y a quand même cet artefact.

ça ne se produit qu'avec la version 5.23 et 5.30

ça ne se produit qu'avec la version 5.23 et 5.30
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
- majikeyric
- Messages : 602
- Inscription : dim. 08/déc./2013 23:19
- Contact :
Re: Problème de sprites avec PB 5.30
Tu n'affiches aucun sprite en dehors des limites de l'écran dans ton dernier code ? ou y en a juste 3 comme sur l'image ?
- majikeyric
- Messages : 602
- Inscription : dim. 08/déc./2013 23:19
- Contact :
Re: Problème de sprites avec PB 5.30
Dans mon cas:
Le problème survient quand on affiche un sprite partiellement hors de l'écran ou complétement. Je ne parle pas de superposition.
Dans ton premier code, y a des oiseaux qui sont partiellement hors de l'écran donc c'est normal.
Le problème survient quand on affiche un sprite partiellement hors de l'écran ou complétement. Je ne parle pas de superposition.
Dans ton premier code, y a des oiseaux qui sont partiellement hors de l'écran donc c'est normal.
- majikeyric
- Messages : 602
- Inscription : dim. 08/déc./2013 23:19
- Contact :
Re: Problème de sprites avec PB 5.30
Tes sprites sont dans les limites de l'écran donc c'est normal.Dobro a écrit :Pour ma part, avec mon code pas de probleme ...
pourtant j'utilise ClipSprite
voir ici :
http://www.purebasic.fr/french/viewtopi ... _procedure
- falsam
- Messages : 7317
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Problème de sprites avec PB 5.30
Oui c'est bien ça.majikeyric a écrit :Dans ton premier code, y a des oiseaux qui sont partiellement hors de l'écran donc c'est normal.
j'ai modifié cet extrait de code pour empécher les oiseaux de s'afficher même partiellement hors de la fenêtre et je n'ai plus cet artefact !!!
Pourtant ça fonctionne avec la version 5.22.
C'est embêtant pour un de mes codes ou j'avais un scrolling horizontal.
En bref ..... ce n'est pas un bug.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Problème de sprites avec PB 5.30
majikeyric a écrit :Tes sprites sont dans les limites de l'écran donc c'est normal.Dobro a écrit :Pour ma part, avec mon code pas de probleme ...
pourtant j'utilise ClipSprite
voir ici :
http://www.purebasic.fr/french/viewtopi ... _procedure
j'ai changé le code , pour faire sortir 2 sprites

réessaies

- falsam
- Messages : 7317
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Problème de sprites avec PB 5.30
Dobro peut être que tu pourrais plutôt tester l'exemple que je fourni avec la version 5.23 et 5.30. J'ai ajouté un lien de téléchargement.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%