Page 1 sur 1

[V4] AddBillboard & CreateBillboardGroup : bizarrerie...

Publié : sam. 27/mai/2006 8:32
par Sehka
Salut à tous,
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
Lorsqu'on appuie sur la touche espace, les billboards devrait apparaître, non ? :(
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
Est ce un bug ? Existe-t-il une subtilité qui m'a échappée ?
Merci :!: