sprite3D Scrolling

Partagez votre expérience de PureBasic avec les autres utilisateurs.
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

sprite3D Scrolling

Message par bombseb »

Bonjour,

j'aimerais faire un effet graphique un peu comme dans le clip "One of these days" de Pink floyd
pour l'instant c'est plutot moche mais bon, c'est un début

J'aimerais savoir si il est possible de retirer cette #*@* de ligne en diagonale qui gache tout due au sprite3D qui est constitué de 2 vertex...

Code : Tout sélectionner

;{--------------------------- Init Sprite & Init Keyboard -------------------------------
If InitSprite () = 0 Or InitKeyboard()= 0 Or InitSprite3D() = 0
  MessageRequester ("Erreur", "Impossible d'initialiser directx",#PB_MessageRequester_Ok)
  End
EndIf
;}---------------------------------------------------------------------------------------


;{----------------------------------- Plein écran  --------------------------------------
#WindowWidth    = 640 
#WindowHeight   = 480
If OpenScreen(#WindowWidth, #WindowHeight, 32, "Démo") = 0
   MessageRequester ("Erreur", "Impossible d'ouvrir l'écran",#PB_MessageRequester_Ok)
   End
EndIf
;}----------------------------------------------------------------------------------------

Enumeration
  #SpriteBuffer
  #SpriteBuffer3D
  #Sprite1
  #Sprite3D1
  #nbSprites = 20
  #tmpSprite
EndEnumeration

Global Dim PinkFloyd_x(#nbSprites)
Global Dim PinkFloyd_x2(#nbSprites)

Procedure PinkFloyd_Init ()
  CreateSprite(#SpriteBuffer,256,256, #PB_Sprite_Texture)
  CreateSprite3D(#SpriteBuffer3D, #SpriteBuffer)
  
  CreateSprite(#Sprite1, 32, 32,#PB_Sprite_Texture) 
  If StartDrawing(SpriteOutput(#Sprite1))
    For t = 1 To 16 
      c = t * 16 
      Circle(16, 16, 16 - t, RGB(c,c,c)) 
    Next 
    StopDrawing() 
  EndIf
  CreateSprite3D(#Sprite3D1,#Sprite1)

  For i=0 To #nbSprites-1
    PinkFloyd_x(i)  = Random (220)
    
    If Random (100) > 50
      PinkFloyd_x2(i) = 1
    Else
      PinkFloyd_x2(i) = -1
    EndIf
      
  Next
  
EndProcedure

Procedure PinkFloyd_Main ()
  
  UseBuffer(#SpriteBuffer)
  GrabSprite(#tmpSprite, 0, 0, 255, 255)
  DisplayTransparentSprite(#tmpSprite, 0, 3)
    
    For i=0 To #nbSprites-1
      DisplayTransparentSprite(#Sprite1,PinkFloyd_x(i),0)
      PinkFloyd_x(i) = PinkFloyd_x(i) + PinkFloyd_x2(i)
      If PinkFloyd_x(i) >= 265 Or PinkFloyd_x(i) <= -10
        PinkFloyd_x2(i) = - PinkFloyd_x2(i)
      EndIf
    Next
    
    CreateSprite3D(#SpriteBuffer3D, #SpriteBuffer)
    UseBuffer(-1)
    If Start3D()
      TransformSprite3D(#SpriteBuffer3D, 0,240,100, 640,240,100, 640,480,10, 0,480,10)
      DisplaySprite3D(#SpriteBuffer3D, 0,0, 255)
    Stop3D()
  EndIf
  
  FlipBuffers()
  
EndProcedure


PinkFloyd_Init ()

Repeat
  PinkFloyd_Main ()
  ExamineKeyboard ()
Until KeyboardPushed (#PB_Key_Escape)

End
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Message par bombseb »

une précision,

sur ce topic du forum anglais : http://www.purebasic.fr/english/viewtop ... ht=desktop

la personne à fait un transformsprite3D comme moi mais on ne voit aucune division en diagonale....je ne comprends pas
Anonyme

Message par Anonyme »

as tu essayé mes démos de supersprite3D ?
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Message par bombseb »

heu...

j'ai vaguement vu tout à l'heure cette lib que tu a développé mais j'avoue que je n'ai pas essayé....

on peut trouver ca où ? :P
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Message par bombseb »

je viens de le trouver....

ouah c'est excellent !!!


je vais essayer de voir si je peut l'exploiter... enfin si tu veux bien :D
Anonyme

Message par Anonyme »

non, la license est de 250 euros :D

Attention tout de même, cela reste des sprites :wink:
c'est pas de la vrai 3D
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Message par bombseb »

yes

par contre, il n'y a aucun exemples....


non mais en fait je suis en train de me faire une procedure pour ce que je veux faire... j'ai déja presque fini :oops:

par contre je ne sais pas si vas tres rapide
Anonyme

Message par Anonyme »

la 2° page du post supersprite3d , 1°er topic y a qq exemples.
Thierryfr
Messages : 102
Inscription : mer. 04/avr./2007 16:28

Message par Thierryfr »

cpl bator
j'ai lancer ton code j'ai un ecran noir .
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: sprite3D Scrolling

Message par Backup »

bombseb a écrit :Bonjour,

j'aimerais faire un effet graphique un peu comme dans le clip "One of these days" de Pink floyd
pour l'instant c'est plutot moche mais bon, c'est un début

J'aimerais savoir si il est possible de retirer cette #*@* de ligne en diagonale qui gache tout due au sprite3D qui est constitué de 2 vertex...

desolé mais chez moi ce listing n'affiche rien de rien ... (ecran noir !)8O 8O

et je ne comprends pas pourquoi , peut etre ma carte graphique ??



a quoi sert cette ligne ?

Code : Tout sélectionner

 CreateSprite3D(#Sprite3D1,#Sprite1)
puisqu'apres tu ne fait plus reference a #Sprite3D1 ?.... :?


t'as pas testé le code que tu as posté , c'est pas possible ...
Anonyme

Message par Anonyme »

@Thierry

Avec quel code exactement ?

je rectifie se que j'ai écrit plus haut

les exemples sont sur le 1° post , la 2° page c'est la p'tite màj.
je viens de testé, ca marche.
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Message par bombseb »

a quoi sert cette ligne ?

Code:
CreateSprite3D(#Sprite3D1,#Sprite1)


puisqu'apres tu ne fait plus reference a #Sprite3D1 ?.... Confused


t'as pas testé le code que tu as posté , c'est pas possible ...

oui c'est ligne ne sert à rien... j'aurais pu la retirer
par contre chez moi ca marche...enfin maintenant j'ai tout changé....
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

quelqu'un peut confirmer qu'avec le listing de bomsec plus haut
on ne voit rien ?? 8O

@Bombseb : tu utilise la 4.02 ??
Dernière modification par Backup le sam. 16/juin/2007 10:35, modifié 2 fois.
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Message par bombseb »

heu non moi c'est la 4.00 tout court

et c'est Bombseb :D
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

bombseb a écrit :heu non moi c'est la 4.00 tout court

et c'est Bombseb :D
oui excuse :D

je viens de reinstaller la V4.00
pareil, je ne vois rien ! 8O

et réinstallation de la v 4.02
rien non plus !! :?

c'est etrange ...


quelqu'un peut essayer ??

ps : j'ai une nvidia 7600 GT thd
Répondre