Besoin de testeurs pour performances sprite3d

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Besoin de testeurs pour performances sprite3d

Message par Fig »

Bonjour,

Puisque les sprite3d affichent deux triangles, je souhaiterai savoir si la performance varie d'une carte 3d à une autre... (ce qui devrait être le cas)
J'ai besoin que vous lanciez ce petit prog et que vous zoomiez avec les fleches avant/arriere.
Donnez moi s'il vous plait votre carte graphique, le FPS affiché et le nombre de tiles affichés au zoom maximum et minimum.

En vous remerciant, :mrgreen:

Code : Tout sélectionner

If InitSprite() = 0 Or InitKeyboard()=0 Or InitMouse()=0 Or InitSprite3D()=0 Or InitSound()=0:MessageRequester("Error","Error DirectX",0):EndIf
ExamineDesktops()
Sprite3DQuality(#PB_Sprite3D_BilinearFiltering)
;{-structures
Structure carte1
  tile.i
  *element
  X.i
  Y.i
EndStructure
Structure ordre_affichage1
  X.i
  Y.i
EndStructure
Structure sprite1
  spritedebase.i
  biasX.i
  biasY.i
EndStructure
;}
;{- Taille d'origine des tiles
X_Tilesize=64
Y_Tilesize=X_Tilesize/2
taille_tile=128
;}
;{-déclare les variables globales
Global xmax=DesktopWidth(0),ymax=DesktopHeight(0)
Global xscroll,yscroll,Xscrolliso,Yscrolliso
Global nbcaseX=Round(xmax/X_Tilesize,1);nombre de Case en hauteur en diagonal à afficher
Global nbcaseY=Round(ymax/Y_Tilesize,0);nombre de Case en largeur en diagonal à afficher
Global Scroll_X=80,Scroll_Y=80,IsoScroll_X=1,IsoScroll_Y=80,XX,YY
Global Scroll_X=80,Scroll_Y=80,IsoScroll_X=1,IsoScroll_Y=80,XX,YY
Global vitesse_scroll=32,miliscrol_X,miliscrol_Y,zoom_carte=4
;}
;{-déclare les variables "temporaires"
Global T_i,T_j,T_nb,T_DecX=0,T_DecY=0,T_offset=0
;}

;déclare l'aire de jeu
Global Dim carte.carte1(1023,1023)
;déclare le tableau d'ordre d'affichage des tiles
Global Dim ordre_affichage.ordre_affichage1(20000)
;liste des caractéristiques de l'animation des arbres
Global NewList sprite.sprite1()
;ouvre un écran
OpenScreen(xmax,ymax, DesktopDepth(0), "test")

;{-rempli la carte
;rempli de Tiles
For t_i=0 To 1023
  For t_j=0 To 1023
    carte(t_i,t_j)\tile=Random(2)+1
  Next t_j
Next t_i
;initialise les arbres
For t_i=0 To 10000
  Repeat
    X=Random(1021)+1
    Y=Random(1021)+1
    AddElement(sprite())
    sprite()\spritedebase=150
    sprite()\biasX=-30
    sprite()\biasY=-108
  Until carte(x,y)\element=0
  carte(X,Y)\element=@sprite()
Next t_i
;}

;pré-calcul l'ordre d'affichage des tiles à l'écran
Macro ordredaffichage
  T_nb=0
  ReDim ordre_affichage(60000)
  For T_j=nbcaseY To -nbcaseY Step -1
    For T_i=nbcaseX To -nbcaseX Step -1
      T_nb+1
      ordre_affichage(T_nb)\X=-T_j-T_i
      ordre_affichage(T_nb)\Y=T_i-T_j
    Next T_i
    For T_i=nbcaseX To -nbcaseX+1 Step -1
      T_nb+1
      ordre_affichage(T_nb)\X=-T_j-T_i+1
      ordre_affichage(T_nb)\Y=T_i-T_j
    Next T_i
  Next T_j
  ReDim ordre_affichage(T_nb)
EndMacro
ordredaffichage

;{-création des sprites
T_T=100000
For t_j=1 To 3
  ;sprite de terrain :herbe verte, herbe sèche et terre nue
  CreateSprite(t_j,taille_tile,taille_tile,#PB_Sprite_Texture)
  StartDrawing(SpriteOutput(t_j))
  Box(0,0,taille_tile,taille_tile,RGB(0,0,0))
  Box(0,0,taille_tile,taille_tile,RGB(196, 178, 86))
  For T_i=1 To T_T
    Plot(Random(taille_tile-1),Random(taille_tile-1),RGB(0,200,50))
    Plot(Random(taille_tile-1),Random(taille_tile-1),RGB(0,127,0))
  Next T_i
  T_T/10
  StopDrawing()
Next T_j
;sprite arbre
CreateSprite(150,128,128,#PB_Sprite_Texture)
StartDrawing(SpriteOutput(150))
Box(107/2,64/2,42/2,255/2,RGB(1,1,1))
Box(108/2,64/2,40/2,255/2,RGB(173, 103, 82))
Circle(128/2,65/2,66/2,RGB(1,1,1))
Circle(128/2,65/2,64/2,RGB(0,200,0))
Circle(128/2,65/2,30/2,RGB(1,1,1))
Circle(128/2,65/2,28/2,RGB(0,0,0))
StopDrawing()
;sprite de la souris
CreateSprite(129,16,16,#PB_Sprite_Texture)
StartDrawing(SpriteOutput(129))
LineXY(0,0,15,5,RGB(255,255,255))
LineXY(0,0,5,15,RGB(255,255,255))
LineXY(15,5,5,15,RGB(255,255,255))
StopDrawing()

;transforme les sprites carrées en tiles losanges isométriques rapport 1/2
For T_i=1 To 3
  CreateSprite3D(T_i,T_i)
  TransformSprite3D(T_i,X_Tilesize/2,0,X_Tilesize,Y_Tilesize/2,X_Tilesize/2,Y_Tilesize,0,Y_Tilesize/2)
Next T_i
CreateSprite3D(150,150)
CreateSprite3D(129,129)
;}

;{-lettres en sprites
LoadFont(0,"Arial",13)
For i=32 To 128
  CreateSprite(i,32,32,#PB_Sprite_Texture)
  StartDrawing(SpriteOutput(i))
  DrawingFont(FontID(0)) 
  DrawText(24-(TextWidth(Chr(i))>>1),0,Chr(i))
  StopDrawing()
  CreateSprite3D(i,i)
Next i
;}

Procedure texte3D(texte.s,x.i,y.i)
  majuscule=10
  For i=1 To Len(texte)
    c.s=Mid(texte,i,1)
    
    If c="i" Or c="l" Or c="I" Or c="j":majuscule=8:EndIf
    If c="t" Or c="f" Or c="r" Or c="1":majuscule=9:EndIf
    If c="x" Or c="m":majuscule=10:EndIf
    If c="W":majuscule=16:EndIf
        x+majuscule
        DisplaySprite3D(Asc(Mid(texte,i,1)),x,y)
        majuscule=10
    If Mid(texte,i,1)>="A" And Mid(texte,i,1)<="Z":majuscule=12:EndIf
    If c="i" Or c="l" Or c="I" Or c="j":majuscule=7:EndIf
    If c="t" Or c="f" Or c="r" Or c="1":majuscule=9:EndIf
    If c="x" Or c="m":majuscule=11:EndIf
    If c="W":majuscule=16:EndIf
  Next i
EndProcedure

Macro changezoom
      nbcaseX=Round(xmax/x_tilesize,1);nombre de Case en hauteur en diagonal à afficher
    nbcaseY=Round(xmax/y_tilesize,1)
    Start3D()
    ;change la taille des tiles
    For T_i=1 To 3
      TransformSprite3D(T_i,X_Tilesize/2,0,X_Tilesize,Y_Tilesize/2,X_Tilesize/2,Y_Tilesize,0,Y_Tilesize/2)
    Next T_i
    ;change la taille des arbres
    ratiox.f=X_tilesize/64
    ratioy.f=y_tilesize/32
    ZoomSprite3D(150,128*ratiox,128*ratioy)
    Stop3D()  
EndMacro
changezoom
;boucle principale
Repeat
  FlipBuffers()
  ClearScreen(RGB(0,0,0))
  Delay(3)
  ExamineKeyboard()
  ExamineMouse()
  XX=MouseX()
  YY=MouseY()
  ;{-scroll+zoom de la carte
  ;zoomIN
  If KeyboardPushed(#PB_Key_Up) And x_tilesize<512
    x_tilesize+zoom_carte
    y_tilesize=x_tilesize/2
    changezoom
    ordredaffichage
  EndIf
  ;zoomOut
  If KeyboardPushed(#PB_Key_Down) And x_tilesize>32
    x_tilesize-zoom_carte
    y_tilesize=x_tilesize/2
    changezoom
    ordredaffichage
  EndIf
  
  If XX>xmax-20
    If Scroll_X<1023 And Scroll_Y>0
      miliscrol_X-vitesse_scroll
      If miliscrol_X<=0
        Scroll_X+1:Scroll_Y-1
        IsoScroll_X+1
        miliscrol_X=X_Tilesize
      EndIf
    EndIf
  EndIf
  
  If XX<20
    If Scroll_X>0 And Scroll_Y<1023
      miliscrol_X+vitesse_scroll
      If miliscrol_X>=X_Tilesize
        miliscrol_X=0
        Scroll_X-1:Scroll_Y+1
        IsoScroll_X-1
      EndIf
    EndIf
  EndIf    
  
  If YY>ymax-20
    If Scroll_X<1023 And Scroll_Y<1023
      miliscrol_Y-vitesse_scroll/2
      If miliscrol_Y<=0
        Scroll_X+1:Scroll_Y+1:IsoScroll_Y+1:miliscrol_Y=Y_Tilesize
      EndIf
    EndIf
  EndIf
  
  If YY<20
    If Scroll_X>0 And Scroll_Y>0
      miliscrol_Y+vitesse_scroll/2
      If miliscrol_Y>=Y_Tilesize
        Scroll_X-1:Scroll_Y-1:IsoScroll_Y-1:miliscrol_Y=0
      EndIf
    EndIf
  EndIf
  ;}
  
  ;{-Affichage sprites 3D
    If Val(FormatDate("%ss", Date()))=sek
    FPS+1
  Else
    FPS$=Str(FPS)
    FPS=0
  EndIf
  sek=Val(FormatDate("%ss", Date()))
  Start3D()
  ;affichage des tiles
  For i=0 To T_nb
    sx=Scroll_X+ordre_affichage(i)\X
    sy=Scroll_Y+ordre_affichage(i)\Y
    ;Si dans le tableau de jeu...
    If sx>=0 And sy>=0 And sy<=1023 And sx<=1023
      T_Cases=carte(sx,sy)\tile
      sxx=-sy*(X_Tilesize/2)+ sx*(X_Tilesize/2)-IsoScroll_X*X_Tilesize+xmax/2-X_Tilesize+miliscrol_X
      syy=sy*(Y_Tilesize/2) + sx*(Y_Tilesize/2)-IsoScroll_Y*Y_Tilesize+ymax/2-Y_Tilesize-Y_Tilesize/2+miliscrol_Y
      ;affiche la case de terrain
      DisplaySprite3D(T_Cases,sxx,syy)
    EndIf
  Next i
  
  ;affichage des éléments sur les tiles
  For i=0 To T_nb
    sx=Scroll_X+ordre_affichage(i)\X
    sy=Scroll_Y+ordre_affichage(i)\Y
    ;Si dans le tableau de jeu...
    If sx>=0 And sy>=0 And sy<=1023 And sx<=1023
      sxx=-sy*(X_Tilesize/2)+ sx*(X_Tilesize/2)-(IsoScroll_X*X_Tilesize)+xmax/2-X_Tilesize+miliscrol_X
      syy=sy*(Y_Tilesize/2) + sx*(Y_Tilesize/2)-IsoScroll_Y*Y_Tilesize+ymax/2-Y_Tilesize-Y_Tilesize/2+miliscrol_Y
      If carte(sx,sy)\element
        ;affiche l'élément sur cette case
        ChangeCurrentElement(sprite(),carte(sx,sy)\element)
        sxx1=sxx+sprite()\biasX*ratiox
        syy1=syy+sprite()\biasY*ratioy
        DisplaySprite3D(sprite()\spritedebase,sxx1,syy1)
      EndIf
    EndIf
  Next i
  ;affichage du texte
  texte3D("FPS:"+FPS$,1,1)
  texte3D("nombre de tiles affiches: "+Str(T_nb),1,15)
  ;affichage de la souris
  DisplaySprite3D(129,XX,YY)
  Stop3D()
  ;}
  
Until KeyboardPushed(#PB_Key_Escape)
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Atomo
Messages : 207
Inscription : lun. 17/sept./2007 12:27

Re: Besoin de testeurs pour performances sprite3d

Message par Atomo »

ATI Radeon 4870HD
Debugger Off
Zoom-Out = 30fps (44943 tiles)
Zoom-In = 60fps (255 tiles)
Dernière modification par Atomo le ven. 27/mai/2011 8:20, modifié 1 fois.
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: Besoin de testeurs pour performances sprite3d

Message par boddhi »

Carte : NVidia GeForce 9600M GT - 1Go
Zoom max avec partie noire : 169 tiles - 60 FPS
Zoom min : 32761 tiles - 18 FPS avec partie noire - 12 FPS sans partie noire
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Besoin de testeurs pour performances sprite3d

Message par graph100 »

Carte : NVIDIA GeForce 9800M GT

résolution de 1920*1200 :

zoom in : 59 FPS et 289 tiles
le FPS descend à partir de 6500 tiles
zoom out : 10 FPS et 51081 tiles

résolution de 1280*800 :

zoom in : 60 FPS et 143 tiles
le FPS descend à partir de 6500 tiles
zoom out : 20 FPS et 25941 tiles
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
Ar-S
Messages : 9546
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Besoin de testeurs pour performances sprite3d

Message par Ar-S »

HD Radeon 6850 - 1680 x 1050

59 FPS à 28 FPS : 44953
zoom très propre mais gros soucis de souris.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Thyphoon
Messages : 2707
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: Besoin de testeurs pour performances sprite3d

Message par Thyphoon »

ATI HD5700

36 FPS avec 44943 en étant au centre de ta map (pas de partie de noire) et debugger desactivé !

:o)
Avatar de l’utilisateur
Mindphazer
Messages : 701
Inscription : mer. 24/août/2005 10:42

Re: Besoin de testeurs pour performances sprite3d

Message par Mindphazer »

Zoom maxi : 59 FPS / 289 tiles
Zoom mini : 13 FPS / 58081 tiles

NVDIA GeForce 8400 GS
Bureau : Win10 64bits
Maison : Macbook Pro M3 16" SSD 512 Go / Ram 24 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Besoin de testeurs pour performances sprite3d

Message par graph100 »

@AR-S : idem, j'ai un gros soucis de souris : le curseur ne bouge quasiment pas, sauf si on bouge très lentement.
Je pense que ça viens du type de souris. J'ai une razer lachesis, donc une souris à très grand DPI
As-tu le même genre de souris ?
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
Ar-S
Messages : 9546
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Besoin de testeurs pour performances sprite3d

Message par Ar-S »

J'ai une R.A.T 5.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre