PureBasic

Forums PureBasic
Nous sommes le Mar 23/Juil/2019 12:58

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 10 messages ] 
Auteur Message
 Sujet du message: Sprite3DBlendingMode(5, 7) ne marche pas bien en FullScreen
MessagePosté: Lun 07/Déc/2009 9:05 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 25/Aoû/2004 6:31
Messages: 2594
Localisation: Eragny
Je viens de découvrir je pense un bug, a moins que ça soit moi qui n'utilise pas correctement cette commande

Voici un code
A la ligne 8 :
mettre Prefs\FullScreen=#True pour passer en plein ecran
mettre Prefs\FullScreen=#False pour passer en mode fenêtré

Ligen 94 :
pour activer et désactiver le Sprite3DBlendingMode(5, 7)

Vous remarquerez que ça marche tres bien en mode fenêtre mais pas en plein écran !et qu'apparment c'est le Sprite3DBlendingMode(5, 7) qui pose problème !

voici le code
vous pouvez me confirmer ou pas ?
Merci d'avance
Code:
UsePNGImageDecoder()
Structure Prefs
  FullScreen.b
  ScreenWidth.l
  ScreenHeight.l
EndStructure
Global Prefs.prefs
Prefs\FullScreen=#True ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<Ici
Prefs\ScreenWidth=800
Prefs\ScreenHeight=600

InitSprite()
InitSprite3D()
InitKeyboard()
   
Select Prefs\FullScreen
   Case #True ; Ouverture en plein ecran
     ExamineDesktops()
      If OpenScreen(Prefs\ScreenWidth,Prefs\ScreenHeight,32,"Test",#PB_Screen_WaitSynchronization, DesktopFrequency(0))
         Debug("Screen is open "+Str(Prefs\ScreenWidth)+"x"+Str(Prefs\ScreenHeight)+" 32bits")
         
      Else
         Debug("Error:Can't open Screen with "+Str(Prefs\ScreenWidth)+"x"+Str(Prefs\ScreenHeight)+" 32bits")
         End
      EndIf
   Case #False ; Ouverture dans une Fenêtre
      #W_Screen=0
      If OpenWindow(#W_Screen,0,0,Prefs\ScreenWidth,Prefs\ScreenHeight,"Test",#PB_Window_ScreenCentered) And OpenWindowedScreen(WindowID(#W_Screen),0,0,Prefs\ScreenWidth,Prefs\ScreenHeight,1,0,0)
         Debug("Window is open "+Str(Prefs\ScreenWidth)+"x"+Str(Prefs\ScreenHeight))
      Else
         Debug("Error:Can't open Window with "+Str(Prefs\ScreenWidth)+"x"+Str(Prefs\ScreenHeight))
         End
      EndIf
EndSelect
     

#Spr_HoleHand=0
    ;LoadSprite(#Spr_HoleHand,"fullhand.png",#PB_Sprite_Texture|#PB_Sprite_AlphaBlending)
    CreateSprite(#Spr_HoleHand,128,128,#PB_Sprite_Texture|#PB_Sprite_AlphaBlending)
    StartDrawing(SpriteOutput(#Spr_HoleHand))
   
      Circle(64,64,64,#Green)

    For z=1 To 10
      Circle(Random(128),Random(128),Random(10),#Green)
    Next
    StopDrawing()
    CreateSprite3D(#Spr_HoleHand,#Spr_HoleHand)


Structure MyHole
  Rayon.l
  StarAngle.l
  Size.l
  Angle.l
  Alpha.l
EndStructure

Global NewList MyHole.MyHole()

NbStar=38 ;Normalement 40
For z=NbStar To 1 Step -1
  AddElement(MyHole())
  MyHole()\Rayon=Pow(z,1.3)*(Prefs\ScreenWidth/4)/(NbStar*2)
  MyHole()\StarAngle.l=Random(360)
  MyHole()\Size=(NbStar-ListIndex(MyHole()))*128/NbStar
  MyHole()\Angle=(NbStar-ListIndex(MyHole()))*360/NbStar
  MyHole()\Alpha=255-((NbStar-ListIndex(MyHole()))*255/NbStar)
Next

Structure MyHolePrefs
  CordX.l
  CordY.l
  AngleNova.f
  CosAngleNova.f
  SinAngleNova.f
  Coef.l
EndStructure
Global MyHolePrefs.MyHolePrefs

MyHolePrefs\Coef=7
MyHolePrefs\CordX=Prefs\ScreenWidth/2
MyHolePrefs\CordY=Prefs\ScreenHeight/2
;Quelques Précalcule
MyHolePrefs\AngleNova=-15*#PI/180 ;POur un Angle de 15°
MyHolePrefs\CosAngleNova=Cos (MyHolePrefs\AngleNova)
MyHolePrefs\SinAngleNova=Sin (MyHolePrefs\AngleNova)
#BA=#PI
#BB=#PI/2
#BC=#PI+#PI/2

Procedure Spiral()
  t.f=ElapsedMilliseconds()/10000
  Sprite3DBlendingMode(5, 7)  ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<Et là
  ForEach MyHole()
    AngleStar.f=t+ListIndex(MyHole())/MyHolePrefs\Coef
    Halfrayon=MyHole()\Rayon/2
    x=MyHole()\Rayon*Cos(AngleStar)
    y=Halfrayon*Sin(AngleStar)
    x2=MyHole()\Rayon*Cos(#BA+AngleStar)
    y2=Halfrayon*Sin(#BA+AngleStar)
    x3=MyHole()\Rayon*Cos(#BB+AngleStar)
    y3=Halfrayon*Sin(#BB+AngleStar)
    x4=MyHole()\Rayon*Cos(#BC+AngleStar)
    y4=Halfrayon*Sin(#BC+AngleStar)

  ; ********* voici la formule de la rotation d'image *********
    ;<------------ en degres !!! :o)
   
     x= x * MyHolePrefs\CosAngleNova +( Y)* MyHolePrefs\SinAngleNova
     y=x * MyHolePrefs\SinAngleNova + (Y)* MyHolePrefs\CosAngleNova
               
     x2= x2 * MyHolePrefs\CosAngleNova +( y2)* MyHolePrefs\SinAngleNova
     y2= x2 * MyHolePrefs\SinAngleNova + (y2)* MyHolePrefs\CosAngleNova
                 
     x3= x3 * MyHolePrefs\CosAngleNova +( y3)* MyHolePrefs\SinAngleNova
     y3= x3 * MyHolePrefs\SinAngleNova + (y3)* MyHolePrefs\CosAngleNova
                 
     x4= x4 * MyHolePrefs\CosAngleNova +( Y4)* MyHolePrefs\SinAngleNova
     Y4= x4 * MyHolePrefs\SinAngleNova + (Y4)* MyHolePrefs\CosAngleNova
                 
     ;*****************************************************
    ZoomSprite3D(#Spr_HoleHand,MyHole()\Size,MyHole()\Size)
    RotateSprite3D(#Spr_HoleHand,MyHole()\StarAngle,#PB_Absolute)

    NewSize=MyHole()\Size/2
      NewCordX=MyHolePrefs\CordX+x:NewCordY=MyHolePrefs\CordY+y
    DisplaySprite3D(#Spr_HoleHand,NewCordX-NewSize,NewCordY-NewSize,MyHole()\Alpha)
      NewCordX=MyHolePrefs\CordX+x2:NewCordY=MyHolePrefs\CordY+y2
    DisplaySprite3D(#Spr_HoleHand,NewCordX-NewSize,NewCordY-NewSize,MyHole()\Alpha)

        NewCordX=MyHolePrefs\CordX+x2:NewCordY=MyHolePrefs\CordY+y2
    DisplaySprite3D(#Spr_HoleHand,NewCordX-NewSize,NewCordY-NewSize,MyHole()\Alpha)

        NewCordX=MyHolePrefs\CordX+x3:NewCordY=MyHolePrefs\CordY+y3
    DisplaySprite3D(#Spr_HoleHand,NewCordX-NewSize,NewCordY-NewSize,MyHole()\Alpha)

        NewCordX=MyHolePrefs\CordX+x4:NewCordY=MyHolePrefs\CordY+y4
    DisplaySprite3D(#Spr_HoleHand,NewCordX-NewSize,NewCordY-NewSize,MyHole()\Alpha)

  Next
EndProcedure
    Repeat
        ExamineKeyboard()
        If Prefs\FullScreen=#False
          Event=WindowEvent()
          Delay(1)
        EndIf
        ClearScreen(RGB(0,0,0)) ;  *****<------- si tu Rem ceci le sprite laisse une trace :D
        Start3D()
        Spiral()
        Stop3D()
       
       
     ;#####
    ;-FPS
    ;#####
    If Second<ElapsedMilliseconds()
      Second = ElapsedMilliseconds() + 1000
      fps = Frame_Counter
      Frame_Counter = 0
    Else
      Frame_Counter + 1
    EndIf
   StartDrawing(ScreenOutput())   

    DrawText(5, 5, "FPS : " + Str(fps),$ffffff)
    ;
  StopDrawing()
       
       
        FlipBuffers():; affiche l'ecran
     

        ;Event=WindowEvent()
         If KeyboardPushed(#PB_Key_Escape)
            End
        EndIf
       
               
    Until Event=#PB_Event_CloseWindow


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Sprite3DBlendingMode(5, 7) ne marche pas bien en FullScreen
MessagePosté: Jeu 10/Déc/2009 12:00 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 25/Aoû/2004 6:31
Messages: 2594
Localisation: Eragny
Ok je met un code plus simple ! Mais j'aimerais avoir un réponse pour savoir si ça me fait ça que chez moi ou chez tout le monde !

Code:
Structure Prefs
  FullScreen.b
  ScreenWidth.l
  ScreenHeight.l
EndStructure
Global Prefs.prefs
Prefs\FullScreen=#True ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<Put #False to test in WindowScreen and #True to test in FullScreen
Prefs\ScreenWidth=800
Prefs\ScreenHeight=600

InitSprite()
InitSprite3D()
InitKeyboard()
   
Select Prefs\FullScreen
   Case #True ; Ouverture en plein ecran
     ExamineDesktops()
      If OpenScreen(Prefs\ScreenWidth,Prefs\ScreenHeight,32,"Test",#PB_Screen_WaitSynchronization, DesktopFrequency(0))
         Debug("Screen is open "+Str(Prefs\ScreenWidth)+"x"+Str(Prefs\ScreenHeight)+" 32bits")
         
      Else
         Debug("Error:Can't open Screen with "+Str(Prefs\ScreenWidth)+"x"+Str(Prefs\ScreenHeight)+" 32bits")
         End
      EndIf
   Case #False ; Ouverture dans une Fenêtre
      #W_Screen=0
      If OpenWindow(#W_Screen,0,0,Prefs\ScreenWidth,Prefs\ScreenHeight,"Test",#PB_Window_ScreenCentered) And OpenWindowedScreen(WindowID(#W_Screen),0,0,Prefs\ScreenWidth,Prefs\ScreenHeight,1,0,0)
         Debug("Window is open "+Str(Prefs\ScreenWidth)+"x"+Str(Prefs\ScreenHeight))
      Else
         Debug("Error:Can't open Window with "+Str(Prefs\ScreenWidth)+"x"+Str(Prefs\ScreenHeight))
         End
      EndIf
EndSelect
     
#Spr_HoleHand=0
CreateSprite(#Spr_HoleHand,128,128,#PB_Sprite_Texture|#PB_Sprite_AlphaBlending)
StartDrawing(SpriteOutput(#Spr_HoleHand))
  Circle(64,64,64,#Green)
StopDrawing()
CreateSprite3D(#Spr_HoleHand,#Spr_HoleHand)

Procedure Spiral()
  Sprite3DBlendingMode(5, 7)
  For z=0 To 100
    DisplaySprite3D(#Spr_HoleHand,z,z,128)
Next
EndProcedure
   
Repeat

  ExamineKeyboard()
  If Prefs\FullScreen=#False
    Event=WindowEvent()
    Delay(1)
  EndIf
 
  ClearScreen(RGB(0,0,0)) ;  *****<------- si tu Rem ceci le sprite laisse une trace :D
  Start3D()
  Spiral()
  Stop3D()
       
  FlipBuffers():; affiche l'ecran
     
  If KeyboardPushed(#PB_Key_Escape)
    End
  EndIf
 
Until Event=#PB_Event_CloseWindow


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Sprite3DBlendingMode(5, 7) ne marche pas bien en FullScreen
MessagePosté: Jeu 10/Déc/2009 13:35 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Fév/2005 17:34
Messages: 4217
Localisation: Arras, France
Aucun problème ici. J'ai essayé de mettre plus de sprites : pareil, pas de souci.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Sprite3DBlendingMode(5, 7) ne marche pas bien en FullScreen
MessagePosté: Jeu 10/Déc/2009 14:50 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 25/Aoû/2004 6:31
Messages: 2594
Localisation: Eragny
djes a écrit:
Aucun problème ici. J'ai essayé de mettre plus de sprites : pareil, pas de souci.

Merci d'avoir essayé
Peut être un problème de carte Graphique alors ....
Sur mon portable la partie des sprites qui se chevauche clignote lorsque j'utilise l'alphablending et une transparence de sprite inférrieur a 255 .. je vais finir part faire une video lolllllllllll :P


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Sprite3DBlendingMode(5, 7) ne marche pas bien en FullScreen
MessagePosté: Jeu 10/Déc/2009 15:25 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 25/Aoû/2004 6:31
Messages: 2594
Localisation: Eragny
Pour ceux qui veulent voir le problème en video , 2 petite video a télécharger
http://9giga.sfr.fr/index.php?m=c9ae77e8&a=dc18f91e&share=LNK30494b21047ea20b2


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Sprite3DBlendingMode(5, 7) ne marche pas bien en FullScreen
MessagePosté: Mer 16/Déc/2009 16:32 
Hors ligne

Inscription: Dim 23/Déc/2007 18:10
Messages: 471
Salut.

Pour ma part en fenêtré ou plein écran j'obtiens la même chose que ta vidéo : 0839

Bye.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Sprite3DBlendingMode(5, 7) ne marche pas bien en FullScreen
MessagePosté: Mer 16/Déc/2009 17:27 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 25/Aoû/2004 6:31
Messages: 2594
Localisation: Eragny
Geo Trouvpatou a écrit:
Salut.

Pour ma part en fenêtré ou plein écran j'obtiens la même chose que ta vidéo : 0839

Bye.

merci d'avoir essayé en tout cas ! apparement c'est un problème propre a certaine machine, mais sur tout les ordinateurs que je test ça le fait :o( pourquoi chez moi et pas chez les autres ...


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Sprite3DBlendingMode(5, 7) ne marche pas bien en FullScreen
MessagePosté: Jeu 17/Déc/2009 2:25 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 28/Jan/2004 20:58
Messages: 4312
Localisation: Clermont ferrand OU Olsztyn
j'ai le même souci que toi :)

Mais m'a carte graphique est vieillotte et n'est surement pas Direct9 compatible (j'ai direct 9 mais la carte n'en supporte surement pas toutes les fonctions)
Est ce la le point clé ?

J'ai essayé en utilisant DirectX 7 en sous-librairie mais je n'ai plus rien qui s'affiche

correction : en supprimant le #PB_Sprite_AlphaBlending dans CreateSprite(#Spr_HoleHand,128,128,#PB_Sprite_Texture|#PB_Sprite_AlphaBlending)
ça fonctionne en directx 7 (comme sur la vidéo 2)

_________________
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Sprite3DBlendingMode(5, 7) ne marche pas bien en FullScreen
MessagePosté: Jeu 17/Déc/2009 6:47 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 29/Juil/2004 16:33
Messages: 2772
Localisation: Klyntar
Chez moi en compilant ton code j'ai le meme resultat que ta video 0839

windows xp sp2
nvidia GeForce 8500Gt
directx 9

voilou







@++

_________________
Windows 10 x64, PureBasic 5.71 Beta 1 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Sprite3DBlendingMode(5, 7) ne marche pas bien en FullScreen
MessagePosté: Jeu 17/Déc/2009 12:32 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 8705
Je n'ai pas testé tes vidéos, 30 mo c'est trop pour moi (à 64ko/s) (mets les en xvid éventuellement...)
Sinon j'ai testé le 1er code, en plein ecran et fenetré je n'ai pas de clipping des sprites, donc LSI a probablement vu juste avec l'age des Carte Graphique.
La mienne est récente.

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.4x / 5.6x
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
RESIZER GOLD : Mon logiciel de redimensionnement par lot 100% PB


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 10 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye