En ce moment, pour le développement de mon projet je viens de me mettre au Billboard. Une fonctionnalité très intérressante mais qui me semble buggée pour ce que je veux faire.
J'ai repris le code fourni avec PureBasic :
Code : Tout sélectionner
;
; ------------------------------------------------------------
;
; PureBasic - Billboard
;
; (c) 2003 - Fantaisie Software
;
; ------------------------------------------------------------
;
#CameraSpeed = 10
IncludeFile "Screen3DRequester.pb"
Define.f KeyX, KeyY, MouseX, MouseY
If InitEngine3D()
Add3DArchive("Data\", #PB_3DArchive_FileSystem)
InitSprite()
InitKeyboard()
InitMouse()
If Screen3DRequester()
; First create our material, with a little rotate effect
;
CreateMaterial(0, LoadTexture(0, "clouds.jpg"))
RotateMaterial(0, 0.05, 1)
; Then create the billboard group and use the previous material
;
CreateBillboardGroup(0, MaterialID(0), 10, 10)
CreateCamera(0, 0, 0, 100, 100)
var = 0
Repeat
Screen3DEvents()
ClearScreen(RGB(0, 0, 0))
If ExamineKeyboard()
If KeyboardPushed(#PB_Key_Left)
KeyX = -#CameraSpeed
ElseIf KeyboardPushed(#PB_Key_Right)
KeyX = #CameraSpeed
Else
KeyX = 0
EndIf
If KeyboardPushed(#PB_Key_Space)
AddBillboard(0, 0, 0, 0, -40)
AddBillboard(1, 0, -20, 0, -40)
AddBillboard(2, 0, 20, 0, -40)
EndIf
If KeyboardPushed(#PB_Key_Up)
KeyY = -#CameraSpeed
ElseIf KeyboardPushed(#PB_Key_Down)
KeyY = #CameraSpeed
Else
KeyY = 0
EndIf
EndIf
If ExamineMouse()
MouseX = -(MouseDeltaX()/10)*#CameraSpeed/2
MouseY = -(MouseDeltaY()/10)*#CameraSpeed/2
EndIf
RotateCamera(0, MouseX, MouseY, RollZ)
MoveCamera (0, KeyX, 0, KeyY)
RenderWorld()
Screen3DStats()
FlipBuffers()
If var = 0
CreateBillboardGroup(0, MaterialID(0), 10, 10)
var = 1
EndIf
Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
EndIf
Else
MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf
End

Par contre si on prends le code d'origine, cela fonctionne très bien...Ou encore il suffit de modifier le code de la façon suivante :
Code : Tout sélectionner
If KeyboardPushed(#PB_Key_Space)
CreateBillboardGroup(0, MaterialID(0), 10, 10)
AddBillboard(0, 0, 0, 0, -40)
AddBillboard(1, 0, -20, 0, -40)
AddBillboard(2, 0, 20, 0, -40)
EndIf
Merci
