possible bug avec les sprites #PB_Sprite_Texture

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

possible bug avec les sprites #PB_Sprite_Texture

Message par case »

voila je ne comprend pas ce qui ne vas pas a chaque lancement j'obtiens un resultat different a l'affichage.

est-ce un bug ? est-ce que quelqu'un peux eclairer ma lanterne ?

il n'y a un probleme qu'avec les sprite #pb_sprite_texture, que je l'affiche en 3D ou pas

Code : Tout sélectionner

;
;-----------initialisations
If InitSprite() = 0 Or InitKeyboard()=0 Or InitSound()=0 Or InitMouse()=0 
  MessageRequester("Error","DirectX 7+ is needed.",0)
EndIf
If InitSprite3D()=0
  MessageRequester("Error","the game need a proper 3D card to work",0)
EndIf


;-----------ouverture ecran--------------
Global main=OpenWindow(#PB_Any,0,0,800,800,"",#PB_Window_ScreenCentered |#PB_Window_SystemMenu )
Global screen=OpenWindowedScreen(WindowID(main),0,0,800,800,0,0,0)

grid=CreateSprite(#PB_Any,64,64,#PB_Sprite_Texture)
grid2=CreateSprite(#PB_Any,64,64)
UseBuffer(grid)
ClearScreen($444444)
StartDrawing(SpriteOutput(grid))
Box(0,0,64,64,0)
Box(0,0,10,10,$ffffff)
StopDrawing()
UseBuffer(grid2)
ClearScreen($444444)
StartDrawing(SpriteOutput(grid2))
Box(0,0,64,64,0)
Box(0,0,10,10,$ffffff)
StopDrawing()
grid3D=CreateSprite3D(#PB_Any,grid)

UseBuffer(#PB_Default)



Repeat   
  ClearScreen(0)
  ev=WaitWindowEvent(1) 
	x= WindowMouseX(main)
	y= WindowMouseY(main) 
	    Start3D()
        DisplaySprite3D(grid3D,x,y,150)
      Stop3D()
        DisplayTransparentSprite(grid2,x+64,y)
        DisplayTransparentSprite(grid,x+128,y)

  FlipBuffers()
  
Until ev= #PB_Event_CloseWindow
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

tu veux obtenir quoi comme resultat ??

et qu'a tu voulu faire avec ça ?

Code : Tout sélectionner

Box(0,0,64,64,0)
Box(0,0,10,10,$FFFFFF)
8O 8O

deja le premier box sert a rien , puisque tu dessine un carré noir !!

il est déjà noir par défaut !! :)

précise ce que tu veux obtenir .. :)

ps : de plus inutile de faire ça

Code : Tout sélectionner

grid3D=CreateSprite3D(#PB_Any,grid) 
puisque ça , seulement suffit !!

Code : Tout sélectionner

CreateSprite3D(grid3D,grid) 
apres cette fonction de toute façon le sprite 3D sera "grid3D" :)


je ne vois pas ou tu veux en venir avec tes

Code : Tout sélectionner

UseBuffer(grid)
puisque tu defini deja que tu dessine dans le sprite avec

Code : Tout sélectionner

StartDrawing(SpriteOutput(grid))
:)


j'ai viré (mis en REM ) selon moi les lignes qui servent a rien :)
et j'ai corrigé ce que j'ai dit plus haut ! :)

mais je ne sais toujour pas le resultat que tu veux obtenir :)

Code : Tout sélectionner

;
;-----------initialisations
If InitSprite() = 0 Or InitKeyboard()=0 Or InitSound()=0 Or InitMouse()=0
      MessageRequester("Error","DirectX 7+ is needed.",0)
EndIf
If InitSprite3D()=0
      MessageRequester("Error","the game need a proper 3D card to work",0)
EndIf


;-----------ouverture ecran--------------
Global main=OpenWindow(#PB_Any,0,0,800,800,"",#PB_Window_ScreenCentered |#PB_Window_SystemMenu )
Global screen=OpenWindowedScreen(WindowID(main),0,0,800,800,0,0,0)

grid=CreateSprite(#PB_Any,64,64,#PB_Sprite_Texture)
grid2=CreateSprite(#PB_Any,64,64)
;UseBuffer(grid)
;ClearScreen($444444)
StartDrawing(SpriteOutput(grid))
     ; Box(0,0,64,64,0)
      Box(0,0,10,10,$FFFFFF)
StopDrawing()
;UseBuffer(grid2)
;ClearScreen($444444)
StartDrawing(SpriteOutput(grid2))
      ;Box(0,0,64,64,0)
      Box(0,0,10,10,$FFFFFF)
StopDrawing()
CreateSprite3D(grid3D,grid)

;UseBuffer(#PB_Default)



Repeat   
      ClearScreen(0)
      ev=WaitWindowEvent(1)
      x= WindowMouseX(main)
      y= WindowMouseY(main)
      Start3D()
            DisplaySprite3D(grid3D,x,y,150)
      Stop3D()
      DisplayTransparentSprite(grid2,x+64,y)
      DisplayTransparentSprite(grid,x+128,y)
      
      FlipBuffers()
      
Until ev= #PB_Event_CloseWindow 
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Message par case »

en fait j'ai oublié d'enlever certaines lignes innutiles, dans le programme original ces lignes me servent :)

de meme que le rectangle noir car j'utilise une autre couleur tranparente
et le rectangle noir est dessiné de maniere a assombrir une partie de l'image de fond

ceci dit le bug que je rencontre est le suivant
quand j'affiche les 3 sprites ils ne sont pas toujours identiques...

exemple

Image

normalement je devrais avoir trois carres identiques

espaces de 64 pixels

je precise je suis sur la 4.20
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

case a écrit : ceci dit le bug que je rencontre est le suivant
quand j'affiche les 3 sprites ils ne sont pas toujours identiques...
Image
je n'obtient pas du tout cette image avec le code que tu as posté en premier !! 8O 8O

voici ce que j'obtiens avec la v 4.20

Image
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Message par case »

logiquement je devrais avoir trois carres alignes comme sur ton image

mais visiblement les fonctions 2D sur une #pb_sprite_texture semblent fonctionner bizarement chez moi.

ati radeon 4870 ici...

bon c'est pas super grave comme bug mais ca m'oblige a utiliser un workaround a savoir dessiner sur un sprite normal puis faire un grabsprite de celui ci avec le flag pour les textures.. une operation de plus normalement j efais pas ca en realtime donc bon. je peux vivre avec
Répondre