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 : Tout sélectionner
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