Fred a écrit :Sympa !
Un message de Dieu le père, ça me vas droit au coeur ! Merci beaucoup ! il faut avouer que c'est du a un travail Collectif Dont tu fais aussi parti!
Sans Fred Pas de Purebasic
Sans Dobro je serais encore en train de me demander comme dessiné une spiral
Sans djes et son rendu lightwave j'aurais pas eu l'idée pour faire Des étoiles avec un rendu correcte
Sans Cpl.Bator l'effet sur les Sprites 3D aurait été moins bon etc...
Tient d'ailleur j'en profite J'ai modifier le sprite pour les étoiles le rendu est encore meilleur

<<Ici Dobro ! (

)
J'ai juste fait des points de taille différentes ...le rendu n'en est que meilleur ...
J'ai aussi fait quelques modification dans le code
Code : Tout sélectionner
UsePNGImageDecoder()
#dobro=1
#Police=1
#sprite=1
; ***********************************
InitSprite()
InitSprite3D()
InitKeyboard()
FontID = LoadFont(#Police, "arial", 50, #PB_Font_Bold )
EcranX = GetSystemMetrics_(#SM_CXSCREEN):;=largeur de l'ecran
EcranY = GetSystemMetrics_(#SM_CYSCREEN):;=hauteur de l'ecran
WindowID = OpenWindow(1, 0, 0, EcranX, EcranY, "hello", #PB_Window_SystemMenu|#PB_Window_BorderLess |#PB_Window_ScreenCentered )
WindowID = WindowID(1)
Result = OpenWindowedScreen(WindowID,0,0, EcranX, EcranY, 1, 0,0)
Structure Prefs
ScreenWidth.l
ScreenHeight.l
EndStructure
Global Prefs.prefs
Prefs\ScreenWidth=EcranX
Prefs\Screenheight=EcranY
CompilerIf Subsystem("Directx9")
Structure D3DTLVERTEX
x.f
y.f
z.f
rhw.f
Color.l
tu.f
tv.f
EndStructure
Structure PB_Sprite3D
TexRes.l ; TexRes
Vertice.D3DTLVERTEX[4] ; The 4 vertices for the rectangle sprite
TmpVertice.D3DTLVERTEX[4] ; The 4 vertices for the rectangle sprite
Width.l ; width set with ZoomSprite3D()
Height.l ; height set with ZoomSprite3D()
RealWidth.l
RealHeight.l
Angle.f
Transformed.l
EndStructure
CompilerElse ;Directx7
;Thanks Cpl.Bator !!!
Structure vertex
sx.f
sy.f
sz.f
rhw.f
Color.l
specular.l
tu.f
tv.f
EndStructure
Structure PB_Sprite3D
Texture.l
Vertice.vertex[4]
Width.w
Height.w
EndStructure
CompilerEndIf
Procedure SetSpriteLuminosityEx(spriteid.l,lum.c)
Protected RGB_LUM.l,*S.PB_Sprite3D
;doit être dans un Start3D
; 255 = Pleine luminosité 0 = noir
RGB_LUM = RGBA(255,Lum,Lum,255)
*S=IsSprite3D(spriteid)
*S\Vertice[0]\Color = RGB_LUM
*S\Vertice[1]\Color = RGB_LUM
*S\Vertice[3]\Color = RGB_LUM
*S\Vertice[2]\Color = RGB_LUM
EndProcedure
LoadSprite(20,"Gfx/holehand.png",#PB_Sprite_Texture|#PB_Sprite_AlphaBlending)
CreateSprite3D(20,20)
LoadSprite(21,"Gfx/sun.png",#PB_Sprite_Texture|#PB_Sprite_AlphaBlending)
CreateSprite3D(21,21)
LoadSprite(22,"Gfx/star.png",#PB_Sprite_Texture|#PB_Sprite_AlphaBlending)
CreateSprite3D(22,22)
Structure MyHole
Rayon.l
StarAngle.l
EndStructure
Global NewList MyHole.MyHole()
NbStar=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)
Next
Procedure Spiral()
degres=-15
Coef=7
t.f=ElapsedMilliseconds()/40000
CordX=Prefs\ScreenWidth/2
CordY=Prefs\ScreenHeight/2
AngleNova.f=degres*#PI/180
BA.f=#PI
BB.f=#PI/2
BC.f=#PI+#PI/2
ForEach MyHole()
AngleStar.f=t+ListIndex(MyHole())/Coef
x=MyHole()\Rayon*Cos(AngleStar)
y=MyHole()\Rayon/2*Sin(AngleStar)
x2=MyHole()\Rayon*Cos(BA+AngleStar)
y2=MyHole()\Rayon/2*Sin(BA+AngleStar)
x3=MyHole()\Rayon*Cos(BB+AngleStar)
y3=MyHole()\Rayon/2*Sin(BB+AngleStar)
x4=MyHole()\Rayon*Cos(BC+AngleStar)
y4=MyHole()\Rayon/2*Sin(BC+AngleStar)
; ********* voici la formule de la rotation d'image *********
;<------------ en degres !!! :o)
x= x * Cos (AngleNova) +( Y)* Sin (AngleNova)
Y=x * Sin (AngleNova) + (Y)* Cos (AngleNova)
x2= x2 * Cos (AngleNova) +( y2)* Sin (AngleNova)
y2= x2 * Sin (AngleNova) + (y2)* Cos (AngleNova)
x3= x3 * Cos (AngleNova) +( y3)* Sin (AngleNova)
y3= x3 * Sin (AngleNova) + (y3)* Cos (AngleNova)
x4= x4 * Cos (AngleNova) +( Y4)* Sin (AngleNova)
Y4= x4 * Sin (AngleNova) + (Y4)* Cos (AngleNova)
;*****************************************************
size=(ListSize(MyHole())-ListIndex(MyHole()))*128/ListSize(MyHole())
Angle=(ListSize(MyHole())-ListIndex(MyHole()))*360/ListSize(MyHole())
Alpha=255-((ListSize(MyHole())-ListIndex(MyHole()))*255/ListSize(MyHole()))
ZoomSprite3D(20,size,size)
ZoomSprite3D(22,size,size)
RotateSprite3D(22,MyHole()\StarAngle,#PB_Absolute)
RotateSprite3D(20,Angle,#PB_Absolute)
SetSpriteLuminosityEx(20,Alpha)
DisplaySprite3D(20,CordX+x-Size/2,CordY+y-Size/2,Alpha)
DisplaySprite3D(22,CordX+x-Size/2,CordY+y-Size/2,255)
DisplaySprite3D(20,CordX+x2-Size/2,CordY+y2-Size/2,Alpha)
DisplaySprite3D(22,CordX+x2-Size/2,CordY+y2-Size/2,255)
DisplaySprite3D(20,CordX+x3-Size/2,CordY+y3-Size/2,Alpha)
DisplaySprite3D(22,CordX+x3-Size/2,CordY+y3-Size/2,255)
DisplaySprite3D(20,CordX+x4-Size/2,CordY+y4-Size/2,Alpha)
DisplaySprite3D(22,CordX+x4-Size/2,CordY+y4-Size/2,255)
Next
ZoomSprite3D(21,64,64)
DisplaySprite3D(21,CordX-32,CordY-32,200)
EndProcedure
Repeat
ExamineKeyboard()
Event=WindowEvent()
Delay(1)
ClearScreen(RGB(0,0,0)) ; *****<------- si tu Rem ceci le sprite laisse une trace :D
Start3D()
Spiral()
Stop3D()
FlipBuffers():; affiche l'ecran
Event=WindowEvent()
If KeyboardPushed(#PB_Key_Escape)
End
EndIf
If KeyboardReleased(#PB_Key_Down) And degres>-45
degres=degres-1
EndIf
If KeyboardReleased(#PB_Key_Up) And degres<50
degres=degres+1
EndIf
Until Event=#PB_Event_CloseWindow