Page 1 sur 1

PureBasic et Windows 10.

Publié : ven. 30/oct./2015 15:55
par pierre59
Bonjour.

Je souhaite écrire un programme 3D sous Windows 10.

Mais j'obtiens le message d'erreur suivant au lancement: Engine3D can't be initialized.

Pourtant, après vérification, le fichier 'engine3d.dll' figure bien dans le dossier 'compilateur'.

Merci de votre aide.

Re: PureBasic et Windows 10.

Publié : ven. 30/oct./2015 16:18
par comtois
bienvenue sur le forum,

Il faut directx9.

voir réponse ici ou

Re: PureBasic et Windows 10.

Publié : sam. 31/oct./2015 1:25
par falsam
pierre59 a écrit :Mais j'obtiens le message d'erreur suivant au lancement: Engine3D can't be initialized.
Peut être effectivement parce que tu es sous windows10 et que tu vas devoir installer Directx9c mais le fait que tu obtiennes ce message me fait dire que tu pourrais afficher ton code pour voir si tu n'as pas oublié un truc :wink:

A part ça ..... Bienvenue pierre.

Re: PureBasic et Windows 10.

Publié : sam. 31/oct./2015 9:39
par pierre59
Bonjour.

Le code testé est celui de l'exemple 'tank.pb', trouvé dans la doc de PureBasic.

Il me demande maintenant d'afficher une fenêtre, sous Win 10.

Merci de votre aide.

Voici le code de 'tank.pb':

Code : Tout sélectionner

IncludeFile #PB_Compiler_Home + "examples/3d/Screen3DRequester.pb"

Resultat=InitEngine3D()
Resultat = InitSprite() 
Resultat=OpenScreen(800,600,32,"Exemple OpenScreen") 


#PB_Material_AmbientColor = 2
#PlayerSpeed = 0.4
#CameraSpeed = 1

Structure Vector3
  x.f
  y.f
  z.f
EndStructure

Structure s_Key
  Up.i
  Down.i
  Left.i
  Right.i
EndStructure

Structure s_Entity
  elapsedTime.f
  Key.s_Key
  MainNode.i  
  TourelleNode.i
  CanonNode.i
  ShootNode.i
  ForwardNode.i
  SightNode.i
  CameraNode.i  
  SightNode1.i
  CameraNode1.i  
EndStructure

Structure s_Camera
  Camera.i
  Tightness.f
  CameraNode.i 
  TargetNode.i
EndStructure  

Structure Bullet
  Bullet.i
  numRibbon.i
  timer.f
  Direction.Vector3
  Speed.f
  Life.l
EndStructure


Macro GetNodePosition(Position, Node)
  Position\x = NodeX(Node)  
  Position\y = NodeY(Node)  
  Position\z = NodeZ(Node)  
EndMacro

Macro SubVector3(V, V1, V2)
  V\x = V1\x - V2\x
  V\y = V1\y - V2\y
  V\z = V1\z - V2\z
EndMacro

;-Declare
Declare HandleEntity(*Entity.s_Entity)
Declare CameraTrack(*Camera.s_Camera, *Entity.s_Entity)
Declare CreatePyramide(Nb.i)
Declare Shootbullet()

;-Variables 
Define Tank.s_Entity
Define Camera.s_Camera
Global NewList Bullets.Bullet()

If InitEngine3D()
  
  InitSprite()
  InitKeyboard()
  InitMouse()
  
  ;If Screen3DRequester()
    
    Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Textures"        , #PB_3DArchive_FileSystem)
    Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Scripts"         , #PB_3DArchive_FileSystem)
    Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Packs/desert.zip", #PB_3DArchive_Zip)
    Parse3DScripts()
    
    WorldShadows(#PB_Shadow_Modulative, 500)
    
    ;Texture
    CreateTexture(0,128, 128)
    StartDrawing(TextureOutput(0))
    Box(0, 0, 128, 128, RGB(255, 255, 255))
    StopDrawing()
    ; Ribbon texture
    CreateTexture(1,128, 1)
    StartDrawing(TextureOutput(1))
    DrawingMode(#PB_2DDrawing_Gradient)     
    BackColor(0)
    GradientColor(0.5, RGB(255, 255, 255))
    FrontColor(0)
    LinearGradient(0, 0, 128, 0)
    Box(0, 0, 128, 1)
    StopDrawing()
    
    ;-Material
    ;Tank
    CreateMaterial(0, LoadTexture(3, "RustySteel.jpg"))
    
    ;Bullet
    CreateMaterial(1, TextureID(0))
    SetMaterialColor(1, #PB_Material_AmbientColor, RGB(255, 0, 0))
    ;Sol
    GetScriptMaterial(5, "Scene/GroundBlend")
    ;Pyramide
    CreateMaterial(6, LoadTexture(6, "Caisse.png"))
    
    ;Ribbon
    GetScriptMaterial(7, "Examples/LightRibbonTrail")
    
    ;Ground
    CreatePlane(0, 100, 100, 10, 10, 10, 10)
    CreateEntity(0, MeshID(0), MaterialID(5), 0, 0, 0)
    EntityRenderMode(0, 0) ; Disable shadow casting for this entity as it's our plan
    EntityPhysicBody(0, #PB_Entity_StaticBody)
    
    ; Mesh
    CreateCube(1, 1)
    CreateSphere(2, 1.5)
    CreateCylinder(3, 0.5, 8)
    
    ;-Corps
    CreateEntity(1, MeshID(1), MaterialID(0))
    ScaleEntity(1, 4, 2, 8)
    MoveEntity(1, 0, 1, 0)
    
    ;-Tourelle
    CreateEntity(2, MeshID(2), MaterialID(0))
    EntityRenderMode(2, 0)
    
    ;-Canon
    CreateEntity(3, MeshID(3), MaterialID(0))
    RotateEntity(3, 90, 0, 0)
    MoveEntity(3, 0, 0.0, -4)
    
    ;-Create Pyramide
    CreatePyramide(8)
    
    ;-Light
    CreateLight(0,RGB(125, 125, 125), 100, 500, 250)
    AmbientColor(RGB(95, 95, 95))
    
    ;-Fog
    Fog(RGB(128, 128, 128), 1, 0, 10000)
    
    ;-Skybox
    SkyBox("desert07.jpg")
       
    ;-Camera
    CreateCamera(0, 0, 0, 100, 100)
    CameraFOV(0, 40)
    With Camera  
      \Camera = 0
      \Tightness = 0.035
      ; Camera use 2 nodes
      \CameraNode = CreateNode(#PB_Any, 0, 700, 300) ; Camera position
      \TargetNode = CreateNode(#PB_Any)              ; For cameraLookAt 
      AttachNodeObject(\CameraNode, CameraID(\Camera))
    EndWith  
    
    CreateCamera(1, 0.1, 67, 33, 33)
    CameraFOV(1, 25)
    
    With Tank
      \Key\Down  = #PB_Key_Down
      \Key\Left  = #PB_Key_Left
      \Key\Right = #PB_Key_Right
      \Key\Up    = #PB_Key_Up
      
      \MainNode    = CreateNode(#PB_Any) ; Entity position
      \TourelleNode= CreateNode(#PB_Any,  0, 2.0,   0) 
      \CanonNode   = CreateNode(#PB_Any,  0, 0.8,   0) 
      \ShootNode   = CreateNode(#PB_Any,  0, 0.0,  -8)
      \SightNode   = CreateNode(#PB_Any,  0, 2.0, -12) ; For cameraLookAt 
      \CameraNode  = CreateNode(#PB_Any,  0, 6.0,  15) ; Camera position
      \ForwardNode = CreateNode(#PB_Any,  0, 0.0,  -1) ; Direction normalized 
      
      \SightNode1  = CreateNode(#PB_Any,  0, 1.0,   0) ; For cameraLookAt 
      \CameraNode1 = CreateNode(#PB_Any,  0, 1.0,   0) ; Camera1 position
      
      AttachNodeObject(\MainNode, NodeID(\SightNode))
      AttachNodeObject(\MainNode, NodeID(\TourelleNode))
      AttachNodeObject(\MainNode, NodeID(\CameraNode))   
      AttachNodeObject(\MainNode, NodeID(\ForwardNode))     
      
      AttachNodeObject(\TourelleNode, NodeID(\CanonNode))
      AttachNodeObject(\CanonNode   , NodeID(\ShootNode))      
      
      AttachNodeObject(\CanonNode   , NodeID(\CameraNode1))
      AttachNodeObject(\ShootNode   , NodeID(\SightNode1))
      
      AttachNodeObject(\Mainnode    , EntityID(1))
      AttachNodeObject(\TourelleNode, EntityID(2))
      AttachNodeObject(\CanonNode   , EntityID(3))
      AttachNodeObject(\CameraNode1 , CameraID(1))
      
    EndWith
    
    ;-Main loop    
    ;
    Repeat
      Screen3DEvents()
      
      If Engine3DStatus(#PB_Engine3D_CurrentFPS)
        Tank\elapsedTime = 40/Engine3DStatus(#PB_Engine3D_CurrentFPS)
      EndIf       
      
      HandleEntity(@Tank)
      
      ShootBullet()
      
      CameraTrack(@Camera, @Tank)
      CameraLookAt(1, NodeX(Tank\SightNode1), NodeY(Tank\SightNode1), NodeZ(Tank\SightNode1)) 
      
      RenderWorld()
      FlipBuffers()
    Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
 ; EndIf
  
Else
  MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf

End

Procedure CreatePyramide(Nb)
  Define Ent, i, j
  Define Size.f, SizeD.f 
  
  Size=1.5
  SizeD = Size + 0.01
  
  For j = 0 To Nb
    For i= 0 To Nb-j
      Ent = CreateEntity(#PB_Any, MeshID(1), MaterialID(6))
      EntityPhysicBody(Ent, #PB_Entity_BoxBody, 0.1)
      ScaleEntity(Ent, Size, Size, Size)
      MoveEntity(Ent, j*(SizeD/2) + i * SizeD, (SizeD/2)+(j*SizeD), -20, #PB_Absolute)
    Next i
  Next j
EndProcedure
Procedure Normalize(*V.Vector3)
  Define.f magSq, oneOverMag 
  
  magSq = *V\x * *V\x + *V\y * *V\y + *V\z * *V\z 
  If magsq > 0
    oneOverMag = 1.0 / Sqr(magSq)
    *V\x * oneOverMag
    *V\y * oneOverMag
    *V\z * oneOverMag
  EndIf  
  
EndProcedure

Procedure AddShoot(*Entity.s_Entity)
  Define Bullet, Color = RGB(255, 0, 0)
  Define.Vector3 PosCanon, PosShoot 
  
  Bullet = CreateEntity(#PB_Any, MeshID(2), MaterialID(1))
  ScaleEntity(Bullet, 0.1, 0.1, 0.1)
  EntityPhysicBody(Bullet, #PB_Entity_SphereBody, 0.7, 0.1, 0.1)
  MoveEntity(Bullet, NodeX(*Entity\ShootNode), NodeY(*Entity\ShootNode), NodeZ(*Entity\ShootNode), #PB_Absolute)
  AddElement(Bullets())
  
  With Bullets()
    \Bullet = Bullet
    \numRibbon = CreateRibbonEffect(#PB_Any, MaterialID(7), 1, 80, 120); 
    RibbonEffectColor(\numRibbon, 0, RGBA(255, 50, 0, 255), RGBA(1, 5, 255, 5))
    RibbonEffectWidth(\numRibbon, 0, 0.3, 1) 
    AttachRibbonEffect(\numRibbon, EntityParentNode(\Bullet))
    
    GetNodePosition(PosCanon, *Entity\CanonNode)
    GetNodePosition(PosShoot, *Entity\ShootNode)
    SubVector3(\Direction, PosShoot, PosCanon)
    Normalize(\Direction)
    \Speed = 20
    \Life = ElapsedMilliseconds()
    ApplyEntityImpulse(\Bullet, \Direction\x * \Speed, \Direction\y * \Speed, \Direction\z * \Speed)
  EndWith
  
EndProcedure

Procedure Shootbullet()
  ForEach Bullets()
    With Bullets()
      

      
      If ElapsedMilliseconds()-Bullets()\Life>10000
        If IsEntity(\Bullet)
          FreeEntity(\Bullet)
          FreeEffect(\numRibbon)
        EndIf
        DeleteElement(Bullets(), 1)
      EndIf
    EndWith
  Next  
EndProcedure


Procedure HandleEntity(*Entity.s_Entity)
  Protected.Vector3 Forward, PosMain, PosDir 
  Protected Speed.f, Speed2.f, x.f, y.f
  Protected MouseX.f, MouseY.f
  Static Rot.Vector3, Trans.Vector3, Clic, AngleCanon.f, Time 
  
  With *Entity
    GetNodePosition(PosMain, \MainNode)
    GetNodePosition(PosDir, \ForwardNode)
    SubVector3(Forward, PosDir, PosMain)
    
    Speed = #PlayerSpeed * \elapsedTime 
    Speed2 = Speed / 2
    
    If ExamineMouse()
      MouseX = -(MouseDeltaX()/5) * \elapsedTime
      MouseY = -(MouseDeltaY()/5) * \elapsedTime
      
      AngleCanon + MouseY
      If AngleCanon>45
        AngleCanon = 45
      ElseIf AngleCanon<-3
        AngleCanon = -3
      EndIf
      
      If MouseButton(#PB_MouseButton_Left) And ElapsedMilliseconds()-Time > 500
        Time = ElapsedMilliseconds()
        AddShoot(*Entity)
      EndIf
      
    EndIf
    
    If ExamineKeyboard()
      
      If KeyboardReleased(#PB_Key_F5)
        WorldDebug(#PB_World_DebugBody)
      ElseIf KeyboardReleased(#PB_Key_F6)
        WorldDebug(#PB_World_DebugEntity)
      ElseIf KeyboardReleased(#PB_Key_F7)
        WorldDebug(#PB_World_DebugNone)
      EndIf
      
      Rot\x * 0.30
      Rot\y * 0.30
      Rot\z * 0.30
      Trans\x * 0.30
      Trans\y = 0
      Trans\z * 0.30
      
      If KeyboardPushed(\Key\Up)
        Trans\x + Forward\x * Speed 
        Trans\z + Forward\z * Speed
      ElseIf KeyboardPushed(\Key\Down)
        Trans\x + Forward\x * -Speed2
        Trans\z + Forward\z * -Speed2
      EndIf
      
      If KeyboardPushed(\Key\Left)
        Rot\y + 1.5 * \elapsedTime
      ElseIf KeyboardPushed(\Key\Right)
        Rot\y - 1.5 * \elapsedTime
      EndIf 
      
    EndIf
        
    MoveNode(\MainNode, Trans\x, Trans\y, Trans\z)
    RotateNode(\MainNode, 0, Rot\y, 0, #PB_Relative)     
    RotateNode(\TourelleNode, 0, MouseX, 0, #PB_Relative)
    RotateNode(\CanonNode, AngleCanon, 0, 0, #PB_Absolute)
    
  EndWith   
EndProcedure

Procedure CameraTrack(*Camera.s_Camera, *Entity.s_Entity)
   Protected.Vector3 CameraPosition, TargetPosition
   Protected.f x, y, z

   GetNodePosition(CameraPosition, *Entity\CameraNode)
   GetNodePosition(TargetPosition, *Entity\SightNode)
   x = NodeX(*Camera\CameraNode)
   y = NodeY(*Camera\CameraNode)
   z = NodeZ(*Camera\CameraNode)
   x = (CameraPosition\x - x) *  *Camera\Tightness
   y = (CameraPosition\y - y) *  *Camera\Tightness
   z = (CameraPosition\z - z) *  *Camera\Tightness
   MoveNode(*Camera\CameraNode, x, y, z)

   x = NodeX(*Camera\TargetNode)
   y = NodeY(*Camera\TargetNode)
   z = NodeZ(*Camera\TargetNode)
   x = (TargetPosition\x - x) *  *Camera\Tightness
   y = (TargetPosition\y - y) *  *Camera\Tightness
   z = (TargetPosition\z - z) *  *Camera\Tightness
   MoveNode(*Camera\TargetNode, x, y, z)

   CameraLookAt(*Camera\Camera, NodeX(*Camera\TargetNode), NodeY(*Camera\TargetNode), NodeZ(*Camera\TargetNode))

EndProcedure
Et celui de 'Screen3DRequester.pb':

Code : Tout sélectionner

#WINDOW_Screen3DRequester = 0

#GADGET_FullScreen        = 1
#GADGET_Windowed          = 2
#GADGET_ScreenModesLabel  = 3
#GADGET_WindowedModes     = 4
#GADGET_Launch            = 5
#GADGET_Cancel            = 6
#GADGET_Logo              = 7
#GADGET_Frame             = 8
#GADGET_ScreenModes       = 9
#GADGET_Antialiasing      = 10
#GADGET_AntialiasingModes = 11


Global Screen3DRequester_FullScreen, Screen3DRequester_ShowStats

UsePNGImageDecoder()

Procedure Screen3DRequester()

  OpenPreferences(GetHomeDirectory()+"PureBasicDemos3D.prefs")
    FullScreen          = ReadPreferenceLong  ("FullScreen"        , 0)
    FullScreenMode$     = ReadPreferenceString("FullScreenMode"    , "800x600")
    WindowedScreenMode$ = ReadPreferenceString("WindowedScreenMode", "800x600")
    AAMode              = ReadPreferenceLong  ("Antialiasing"      , 0)
    
  If ExamineDesktops()
    ScreenX = DesktopWidth(0)
    ScreenY = DesktopHeight(0)
    ScreenD = DesktopDepth(0)
    ScreenF = DesktopFrequency(0)
  EndIf
  
  CompilerIf #PB_Compiler_OS = #PB_OS_Linux
    GadgetHeight = 30
  CompilerElse
    GadgetHeight = 20
  CompilerEndIf
   
  If OpenWindow(#WINDOW_Screen3DRequester, 0, 0, 396, GadgetHeight*4 + 155, "PureBasic - 3D Demos", #PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_Invisible)
   
    Top = 6
   
    ImageGadget  (#GADGET_Logo, 6, Top, 0, 0, LoadImage(0,#PB_Compiler_Home+"examples/3d/Data/PureBasic3DLogo.png"), #PB_Image_Border) : Top+76
   
    FrameGadget(#GADGET_Frame, 6, Top, 384, GadgetHeight*3 +45, "", 0) : Top+20
   
    OptionGadget(#GADGET_FullScreen, 40, Top, 130, GadgetHeight, "Fullscreen")        : Top+GadgetHeight+5
    OptionGadget(#GADGET_Windowed  , 40, Top, 130, GadgetHeight, "Windowed")          : Top+GadgetHeight+5
    TextGadget(#GADGET_Antialiasing, 40, Top+5, 130, GadgetHeight, "Antialiasing mode") : Top - ((GadgetHeight+5) * 2)
   
    ComboBoxGadget (#GADGET_ScreenModes  , 190, Top, 150, GadgetHeight+1)     : Top+GadgetHeight+5
    ComboBoxGadget (#GADGET_WindowedModes, 190, Top, 150, GadgetHeight+1)     : Top+GadgetHeight+5
    ComboBoxGadget (#GADGET_AntialiasingModes, 190, Top, 150, GadgetHeight+1) : Top+GadgetHeight+25
  
    ButtonGadget (#GADGET_Launch,   6, Top, 180, GadgetHeight+5, "Launch", #PB_Button_Default)
    ButtonGadget (#GADGET_Cancel, 200, Top, 190, GadgetHeight+5, "Cancel")
      
    AddGadgetItem(#GADGET_AntialiasingModes,-1,"None")
    AddGadgetItem(#GADGET_AntialiasingModes,-1,"FSAA x2")
    AddGadgetItem(#GADGET_AntialiasingModes,-1,"FSAA x4")
    AddGadgetItem(#GADGET_AntialiasingModes,-1,"FSAA x6")
  
    SetGadgetState(#GADGET_AntialiasingModes,AAMode)
    
    If ExamineScreenModes()
      
      Position = 0
      While NextScreenMode()
        
        Position + 1
        Width       = ScreenModeWidth()
        Height      = ScreenModeHeight()
        Depth       = ScreenModeDepth()
        RefreshRate = ScreenModeRefreshRate()
        
        If Depth > 8
          AddGadgetItem(#GADGET_ScreenModes, -1, Str(Width)+"x"+Str(Height)+"x"+Str(Depth)+"@"+Str(RefreshRate))
          If ScreenX = Width And ScreenY = Height And ScreenD = Depth And ScreenF = RefreshRate
            SetGadgetState(#GADGET_ScreenModes, Position)
            FullScreenMode$ = Str(Width)+"x"+Str(Height)+"x"+Str(Depth)+"@"+Str(RefreshRate)
          EndIf  
        EndIf
       
      Wend        
      
    EndIf
    
    ExamineDesktops()
    NbScreenModes = 7
    
    Restore WindowedScreenDimensions

    Repeat      
      Read.l CurrentWidth
      Read.l CurrentHeight
      
      If CurrentWidth < DesktopWidth(0) And CurrentHeight < DesktopHeight(0)
        AddGadgetItem(#GADGET_WindowedModes, -1, Str(CurrentWidth)+ "x"+Str(CurrentHeight))
        NbScreenModes - 1
      Else
        NbScreenModes = 0
      EndIf
      
    Until NbScreenModes = 0
    
    If FullScreen
      SetGadgetState(#GADGET_FullScreen, 1)
    Else
      SetGadgetState(#GADGET_Windowed  , 1)
    EndIf

    SetGadgetText (#GADGET_ScreenModes  , FullScreenMode$)
    SetGadgetText (#GADGET_WindowedModes, WindowedScreenMode$)
    
    DisableGadget (#GADGET_ScreenModes  , 1-FullScreen)
    DisableGadget (#GADGET_WindowedModes, FullScreen)
    
    HideWindow(#WINDOW_Screen3DRequester, 0)
    
    Repeat
      
      Event = WaitWindowEvent()
      
      Select Event
        
      Case #PB_Event_Gadget
        
        Select EventGadget()
          
        Case #GADGET_Launch
          Quit = 2
          
        Case #GADGET_Cancel
          Quit = 1
          
        Case #GADGET_FullScreen
          DisableGadget(#GADGET_ScreenModes  , 0)
          DisableGadget(#GADGET_WindowedModes, 1)
        
        Case #GADGET_Windowed
          DisableGadget(#GADGET_ScreenModes  , 1)
          DisableGadget(#GADGET_WindowedModes, 0)
                 
        EndSelect
        
      Case #PB_Event_CloseWindow
        Quit = 1
        
      EndSelect
      
    Until Quit > 0
    
    FullScreen          = GetGadgetState(#GADGET_FullScreen)
    FullScreenMode$     = GetGadgetText (#GADGET_ScreenModes)
    WindowedScreenMode$ = GetGadgetText (#GADGET_WindowedModes)
    AAMode              = GetGadgetState(#GADGET_AntialiasingModes)
    
    CloseWindow(#WINDOW_Screen3DRequester)
      
  EndIf
  
  If Quit = 2 ; Launch button has been pressed
  
    CreatePreferences(GetHomeDirectory()+"PureBasicDemos3D.prefs")
      WritePreferenceLong  ("FullScreen"        , FullScreen)          
      WritePreferenceString("FullScreenMode"    , FullScreenMode$)     
      WritePreferenceString("WindowedScreenMode", WindowedScreenMode$) 
      WritePreferenceLong  ("Antialiasing"      , AAMode)  
      
    If FullScreen
      ScreenMode$ = FullScreenMode$
    Else
      ScreenMode$ = WindowedScreenMode$
    EndIf
    
    RefreshRate = Val(StringField(ScreenMode$, 2, "@"))
    
    ScreenMode$ = StringField(ScreenMode$, 1, "@") ; Remove the refresh rate info, so we can parse it easily
    
    ScreenWidth  = Val(StringField(ScreenMode$, 1, "x"))
    ScreenHeight = Val(StringField(ScreenMode$, 2, "x"))
    ScreenDepth  = Val(StringField(ScreenMode$, 3, "x"))
    
    Screen3DRequester_FullScreen = FullScreen ; Global variable, for the Screen3DEvents
    
    Select AAMode
      Case 0:
        AntialiasingMode(#PB_AntialiasingMode_None)
      Case 1:
        AntialiasingMode(#PB_AntialiasingMode_x2)
      Case 2:
        AntialiasingMode(#PB_AntialiasingMode_x4)
      Case 3:
        AntialiasingMode(#PB_AntialiasingMode_x6)
    EndSelect
    
    If FullScreen
      Result = OpenScreen(ScreenWidth, ScreenHeight, ScreenDepth, "3D Demos", #PB_Screen_WaitSynchronization, RefreshRate)
    Else
      If OpenWindow(0, 0, 0, ScreenWidth, ScreenHeight+MenuHeight(), "PureBasic - 3D Demos", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
      
        CreateMenu(0, WindowID(#WINDOW_Screen3DRequester))
          MenuTitle("Project")
          MenuItem(0, "Quit")
    
          MenuTitle("About")
          MenuItem(1, "About...")
              
        Result = OpenWindowedScreen(WindowID(#WINDOW_Screen3DRequester), 0, 0, ScreenWidth, ScreenHeight, 0, 0, 0)
      EndIf
    EndIf
    

    
    
  EndIf
     
  ProcedureReturn Result
EndProcedure


Procedure Screen3DEvents()

  If Screen3DRequester_FullScreen = 0 ; Handle all the events relatives to the window..
  
    Repeat
      Event = WindowEvent()
      
      Select Event
      
        Case #PB_Event_Menu
          Select EventMenu()
          
            Case 0
              Quit = 1
          
            Case 2
              MessageRequester("Info", "Windowed 3D in PureBasic !", 0)
              
          EndSelect
             
        Case #PB_Event_CloseWindow
          Quit = 1
        
      EndSelect
      
      If Quit = 1 : End : EndIf  ; Quit the app immediately
    Until Event = 0
    
  EndIf
  
  If ExamineKeyboard()
    If KeyboardReleased(#PB_Key_F1)
      Screen3DRequester_ShowStats = 1-Screen3DRequester_ShowStats ; Switch the ShowStats on/off
    EndIf
  EndIf
          
EndProcedure


Procedure Screen3DStats()
  If Screen3DRequester_ShowStats
    ; Nothing printed for now
  EndIf
EndProcedure

        


DataSection
  WindowedScreenDimensions:
    Data.l  320, 240
    Data.l  512, 384      
    Data.l  640, 480
    Data.l  800, 600     
    Data.l 1024, 768
    Data.l 1280, 1024
    Data.l 1600, 1200
EndDataSection

Re: PureBasic et Windows 10.

Publié : sam. 31/oct./2015 12:27
par Patrick88
salut, et bienvenue.

Code : Tout sélectionner

If InitEngine3D()
 
  InitSprite()
  InitKeyboard()
  InitMouse()
 
  ;If Screen3DRequester() 

Screen3DRequester()
cette fonction permet de choisir entre le mode fenêtré ou plein écran, si tu commente cette ligne, tu n'ouvre jamais de fenêtre et le code plante.

Pat

Re: PureBasic et Windows 10.

Publié : sam. 31/oct./2015 12:41
par falsam
Patrick88 a écrit :Screen3DRequester()
cette fonction permet de choisir entre le mode fenêtré ou plein écran, si tu commente cette ligne, tu n'ouvre jamais de fenêtre et le code plante.
Bonjour Patrick.

■ Si pierre n'utilises pas l'include Screen3DRequester.pb, il n'aura pas non plus de fenetre 3D et son code ne fonctionnera pas.

l'include Screen3DRequester.pb s'occupant de l'initialisation de l'environnement Ogre 3D il ne fallait pas effectivement insérer ce code

Code : Tout sélectionner

Resultat=InitEngine3D()
Resultat = InitSprite() 
Resultat=OpenScreen(800,600,32,"Exemple OpenScreen") 
■ Le code peut toutefois fonctionner sans l'include Screen3DRequester.pb.

Tu avais bien commencé Pierre. Mais il fallait enlever l'instruction

Code : Tout sélectionner

IncludeFile #PB_Compiler_Home + "examples/3d/Screen3DRequester.pb"
et supprimer aussi toutes les fonctionnalités liées à l'include comme la gestion des évenements 3D

Code : Tout sélectionner

Screen3DEvents()
Voila ton code fonctionnel. Il n'utilise plus l'include Screen3DRequester.pb

Code : Tout sélectionner

Resultat=InitEngine3D()
Resultat = InitSprite() 
Resultat=OpenScreen(800,600,32,"Exemple OpenScreen") 

#PB_Material_AmbientColor = 2
#PlayerSpeed = 0.4
#CameraSpeed = 1

Structure Vector3
  x.f
  y.f
  z.f
EndStructure

Structure s_Key
  Up.i
  Down.i
  Left.i
  Right.i
EndStructure

Structure s_Entity
  elapsedTime.f
  Key.s_Key
  MainNode.i  
  TourelleNode.i
  CanonNode.i
  ShootNode.i
  ForwardNode.i
  SightNode.i
  CameraNode.i  
  SightNode1.i
  CameraNode1.i  
EndStructure

Structure s_Camera
  Camera.i
  Tightness.f
  CameraNode.i 
  TargetNode.i
EndStructure  

Structure Bullet
  Bullet.i
  numRibbon.i
  timer.f
  Direction.Vector3
  Speed.f
  Life.l
EndStructure


Macro GetNodePosition(Position, Node)
  Position\x = NodeX(Node)  
  Position\y = NodeY(Node)  
  Position\z = NodeZ(Node)  
EndMacro

Macro SubVector3(V, V1, V2)
  V\x = V1\x - V2\x
  V\y = V1\y - V2\y
  V\z = V1\z - V2\z
EndMacro

;-Declare
Declare HandleEntity(*Entity.s_Entity)
Declare CameraTrack(*Camera.s_Camera, *Entity.s_Entity)
Declare CreatePyramide(Nb.i)
Declare Shootbullet()

;-Variables 
Define Tank.s_Entity
Define Camera.s_Camera
Global NewList Bullets.Bullet()

If InitEngine3D()
  
  InitSprite()
  InitKeyboard()
  InitMouse()
  
  ;If Screen3DRequester()
  
  Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Textures"        , #PB_3DArchive_FileSystem)
  Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Scripts"         , #PB_3DArchive_FileSystem)
  Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Packs/desert.zip", #PB_3DArchive_Zip)
  Parse3DScripts()
  
  WorldShadows(#PB_Shadow_Modulative, 500)
  
  ;Texture
  CreateTexture(0,128, 128)
  StartDrawing(TextureOutput(0))
  Box(0, 0, 128, 128, RGB(255, 255, 255))
  StopDrawing()
  ; Ribbon texture
  CreateTexture(1,128, 1)
  StartDrawing(TextureOutput(1))
  DrawingMode(#PB_2DDrawing_Gradient)     
  BackColor(0)
  GradientColor(0.5, RGB(255, 255, 255))
  FrontColor(0)
  LinearGradient(0, 0, 128, 0)
  Box(0, 0, 128, 1)
  StopDrawing()
  
  ;-Material
  ;Tank
  CreateMaterial(0, LoadTexture(3, "RustySteel.jpg"))
  
  ;Bullet
  CreateMaterial(1, TextureID(0))
  SetMaterialColor(1, #PB_Material_AmbientColor, RGB(255, 0, 0))
  ;Sol
  GetScriptMaterial(5, "Scene/GroundBlend")
  ;Pyramide
  CreateMaterial(6, LoadTexture(6, "Caisse.png"))
  
  ;Ribbon
  GetScriptMaterial(7, "Examples/LightRibbonTrail")
  
  ;Ground
  CreatePlane(0, 100, 100, 10, 10, 10, 10)
  CreateEntity(0, MeshID(0), MaterialID(5), 0, 0, 0)
  EntityRenderMode(0, 0) ; Disable shadow casting for this entity as it's our plan
  EntityPhysicBody(0, #PB_Entity_StaticBody)
  
  ; Mesh
  CreateCube(1, 1)
  CreateSphere(2, 1.5)
  CreateCylinder(3, 0.5, 8)
  
  ;-Corps
  CreateEntity(1, MeshID(1), MaterialID(0))
  ScaleEntity(1, 4, 2, 8)
  MoveEntity(1, 0, 1, 0)
  
  ;-Tourelle
  CreateEntity(2, MeshID(2), MaterialID(0))
  EntityRenderMode(2, 0)
  
  ;-Canon
  CreateEntity(3, MeshID(3), MaterialID(0))
  RotateEntity(3, 90, 0, 0)
  MoveEntity(3, 0, 0.0, -4)
  
  ;-Create Pyramide
  CreatePyramide(8)
  
  ;-Light
  CreateLight(0,RGB(125, 125, 125), 100, 500, 250)
  AmbientColor(RGB(95, 95, 95))
  
  ;-Fog
  Fog(RGB(128, 128, 128), 1, 0, 10000)
  
  ;-Skybox
  SkyBox("desert07.jpg")
  
  ;-Camera
  CreateCamera(0, 0, 0, 100, 100)
  CameraFOV(0, 40)
  With Camera  
    \Camera = 0
    \Tightness = 0.035
    ; Camera use 2 nodes
    \CameraNode = CreateNode(#PB_Any, 0, 700, 300) ; Camera position
    \TargetNode = CreateNode(#PB_Any)              ; For cameraLookAt 
    AttachNodeObject(\CameraNode, CameraID(\Camera))
  EndWith  
  
  CreateCamera(1, 0.1, 67, 33, 33)
  CameraFOV(1, 25)
  
  With Tank
    \Key\Down  = #PB_Key_Down
    \Key\Left  = #PB_Key_Left
    \Key\Right = #PB_Key_Right
    \Key\Up    = #PB_Key_Up
    
    \MainNode    = CreateNode(#PB_Any) ; Entity position
    \TourelleNode= CreateNode(#PB_Any,  0, 2.0,   0) 
    \CanonNode   = CreateNode(#PB_Any,  0, 0.8,   0) 
    \ShootNode   = CreateNode(#PB_Any,  0, 0.0,  -8)
    \SightNode   = CreateNode(#PB_Any,  0, 2.0, -12) ; For cameraLookAt 
    \CameraNode  = CreateNode(#PB_Any,  0, 6.0,  15) ; Camera position
    \ForwardNode = CreateNode(#PB_Any,  0, 0.0,  -1) ; Direction normalized 
    
    \SightNode1  = CreateNode(#PB_Any,  0, 1.0,   0) ; For cameraLookAt 
    \CameraNode1 = CreateNode(#PB_Any,  0, 1.0,   0) ; Camera1 position
    
    AttachNodeObject(\MainNode, NodeID(\SightNode))
    AttachNodeObject(\MainNode, NodeID(\TourelleNode))
    AttachNodeObject(\MainNode, NodeID(\CameraNode))   
    AttachNodeObject(\MainNode, NodeID(\ForwardNode))     
    
    AttachNodeObject(\TourelleNode, NodeID(\CanonNode))
    AttachNodeObject(\CanonNode   , NodeID(\ShootNode))      
    
    AttachNodeObject(\CanonNode   , NodeID(\CameraNode1))
    AttachNodeObject(\ShootNode   , NodeID(\SightNode1))
    
    AttachNodeObject(\Mainnode    , EntityID(1))
    AttachNodeObject(\TourelleNode, EntityID(2))
    AttachNodeObject(\CanonNode   , EntityID(3))
    AttachNodeObject(\CameraNode1 , CameraID(1))
    
  EndWith
  
  ;-Main loop    
  ;
  Repeat
    
    If Engine3DStatus(#PB_Engine3D_CurrentFPS)
      Tank\elapsedTime = 40/Engine3DStatus(#PB_Engine3D_CurrentFPS)
    EndIf       
    
    HandleEntity(@Tank)
    
    ShootBullet()
    
    CameraTrack(@Camera, @Tank)
    CameraLookAt(1, NodeX(Tank\SightNode1), NodeY(Tank\SightNode1), NodeZ(Tank\SightNode1)) 
    
    RenderWorld()
    FlipBuffers()
  Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
  ; EndIf
  
Else
  MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf

End

Procedure CreatePyramide(Nb)
  Define Ent, i, j
  Define Size.f, SizeD.f 
  
  Size=1.5
  SizeD = Size + 0.01
  
  For j = 0 To Nb
    For i= 0 To Nb-j
      Ent = CreateEntity(#PB_Any, MeshID(1), MaterialID(6))
      EntityPhysicBody(Ent, #PB_Entity_BoxBody, 0.1)
      ScaleEntity(Ent, Size, Size, Size)
      MoveEntity(Ent, j*(SizeD/2) + i * SizeD, (SizeD/2)+(j*SizeD), -20, #PB_Absolute)
    Next i
  Next j
EndProcedure
Procedure Normalize(*V.Vector3)
  Define.f magSq, oneOverMag 
  
  magSq = *V\x * *V\x + *V\y * *V\y + *V\z * *V\z 
  If magsq > 0
    oneOverMag = 1.0 / Sqr(magSq)
    *V\x * oneOverMag
    *V\y * oneOverMag
    *V\z * oneOverMag
  EndIf  
  
EndProcedure

Procedure AddShoot(*Entity.s_Entity)
  Define Bullet, Color = RGB(255, 0, 0)
  Define.Vector3 PosCanon, PosShoot 
  
  Bullet = CreateEntity(#PB_Any, MeshID(2), MaterialID(1))
  ScaleEntity(Bullet, 0.1, 0.1, 0.1)
  EntityPhysicBody(Bullet, #PB_Entity_SphereBody, 0.7, 0.1, 0.1)
  MoveEntity(Bullet, NodeX(*Entity\ShootNode), NodeY(*Entity\ShootNode), NodeZ(*Entity\ShootNode), #PB_Absolute)
  AddElement(Bullets())
  
  With Bullets()
    \Bullet = Bullet
    \numRibbon = CreateRibbonEffect(#PB_Any, MaterialID(7), 1, 80, 120); 
    RibbonEffectColor(\numRibbon, 0, RGBA(255, 50, 0, 255), RGBA(1, 5, 255, 5))
    RibbonEffectWidth(\numRibbon, 0, 0.3, 1) 
    AttachRibbonEffect(\numRibbon, EntityParentNode(\Bullet))
    
    GetNodePosition(PosCanon, *Entity\CanonNode)
    GetNodePosition(PosShoot, *Entity\ShootNode)
    SubVector3(\Direction, PosShoot, PosCanon)
    Normalize(\Direction)
    \Speed = 20
    \Life = ElapsedMilliseconds()
    ApplyEntityImpulse(\Bullet, \Direction\x * \Speed, \Direction\y * \Speed, \Direction\z * \Speed)
  EndWith
  
EndProcedure

Procedure Shootbullet()
  ForEach Bullets()
    With Bullets()
      
      
      
      If ElapsedMilliseconds()-Bullets()\Life>10000
        If IsEntity(\Bullet)
          FreeEntity(\Bullet)
          FreeEffect(\numRibbon)
        EndIf
        DeleteElement(Bullets(), 1)
      EndIf
    EndWith
  Next  
EndProcedure


Procedure HandleEntity(*Entity.s_Entity)
  Protected.Vector3 Forward, PosMain, PosDir 
  Protected Speed.f, Speed2.f, x.f, y.f
  Protected MouseX.f, MouseY.f
  Static Rot.Vector3, Trans.Vector3, Clic, AngleCanon.f, Time 
  
  With *Entity
    GetNodePosition(PosMain, \MainNode)
    GetNodePosition(PosDir, \ForwardNode)
    SubVector3(Forward, PosDir, PosMain)
    
    Speed = #PlayerSpeed * \elapsedTime 
    Speed2 = Speed / 2
    
    If ExamineMouse()
      MouseX = -(MouseDeltaX()/5) * \elapsedTime
      MouseY = -(MouseDeltaY()/5) * \elapsedTime
      
      AngleCanon + MouseY
      If AngleCanon>45
        AngleCanon = 45
      ElseIf AngleCanon<-3
        AngleCanon = -3
      EndIf
      
      If MouseButton(#PB_MouseButton_Left) And ElapsedMilliseconds()-Time > 500
        Time = ElapsedMilliseconds()
        AddShoot(*Entity)
      EndIf
      
    EndIf
    
    If ExamineKeyboard()
      
      If KeyboardReleased(#PB_Key_F5)
        WorldDebug(#PB_World_DebugBody)
      ElseIf KeyboardReleased(#PB_Key_F6)
        WorldDebug(#PB_World_DebugEntity)
      ElseIf KeyboardReleased(#PB_Key_F7)
        WorldDebug(#PB_World_DebugNone)
      EndIf
      
      Rot\x * 0.30
      Rot\y * 0.30
      Rot\z * 0.30
      Trans\x * 0.30
      Trans\y = 0
      Trans\z * 0.30
      
      If KeyboardPushed(\Key\Up)
        Trans\x + Forward\x * Speed 
        Trans\z + Forward\z * Speed
      ElseIf KeyboardPushed(\Key\Down)
        Trans\x + Forward\x * -Speed2
        Trans\z + Forward\z * -Speed2
      EndIf
      
      If KeyboardPushed(\Key\Left)
        Rot\y + 1.5 * \elapsedTime
      ElseIf KeyboardPushed(\Key\Right)
        Rot\y - 1.5 * \elapsedTime
      EndIf 
      
    EndIf
    
    MoveNode(\MainNode, Trans\x, Trans\y, Trans\z)
    RotateNode(\MainNode, 0, Rot\y, 0, #PB_Relative)     
    RotateNode(\TourelleNode, 0, MouseX, 0, #PB_Relative)
    RotateNode(\CanonNode, AngleCanon, 0, 0, #PB_Absolute)
    
  EndWith   
EndProcedure

Procedure CameraTrack(*Camera.s_Camera, *Entity.s_Entity)
  Protected.Vector3 CameraPosition, TargetPosition
  Protected.f x, y, z
  
  GetNodePosition(CameraPosition, *Entity\CameraNode)
  GetNodePosition(TargetPosition, *Entity\SightNode)
  x = NodeX(*Camera\CameraNode)
  y = NodeY(*Camera\CameraNode)
  z = NodeZ(*Camera\CameraNode)
  x = (CameraPosition\x - x) *  *Camera\Tightness
  y = (CameraPosition\y - y) *  *Camera\Tightness
  z = (CameraPosition\z - z) *  *Camera\Tightness
  MoveNode(*Camera\CameraNode, x, y, z)
  
  x = NodeX(*Camera\TargetNode)
  y = NodeY(*Camera\TargetNode)
  z = NodeZ(*Camera\TargetNode)
  x = (TargetPosition\x - x) *  *Camera\Tightness
  y = (TargetPosition\y - y) *  *Camera\Tightness
  z = (TargetPosition\z - z) *  *Camera\Tightness
  MoveNode(*Camera\TargetNode, x, y, z)
  
  CameraLookAt(*Camera\Camera, NodeX(*Camera\TargetNode), NodeY(*Camera\TargetNode), NodeZ(*Camera\TargetNode))
  
EndProcedure

:idea: la fonction OpenScreen() ne permet pas de définir la résolution du jeu et non pas la taille de la fenêtre.

Corrige par exemple

Code : Tout sélectionner

Resultat=OpenScreen(800,600,32,"Exemple OpenScreen") 
par

Code : Tout sélectionner

Resultat=OpenScreen(1024,768,32,"Exemple OpenScreen") 
:idea: Si tu utilises la version 4.40 de Pure Basic, remplace les EntityPhysicBody() par CreateEntityBody()

Amuse toi bien :wink:

Re: PureBasic et Windows 10.

Publié : dim. 01/nov./2015 15:30
par pierre59
Bonjour.

Et voilà que maintenant, j'obtiens un écran tout noir avec le code que falsam me propose juste ci-dessus !!

Cela commence vraiment très mal pour mes débuts avec PB !

Merci de votre aide.

Win 10
PB 5.31

Re: PureBasic et Windows 10.

Publié : dim. 01/nov./2015 16:02
par falsam
pierre59 a écrit :Et voilà que maintenant, j'obtiens un écran tout noir avec le code que falsam me propose juste ci-dessus !!
Dans le doute j'ai à nouveau tester sous windows 10 le code que j'ai proposé et je n'ai pas d'écran noir qui s'affiche.

Si quelqu'un d'autres peut faire un test ? merci :wink:
pierre59 a écrit :Cela commence vraiment très mal pour mes débuts avec PB !
Mais non ça va aller. Je ne connais pas ton niveau de programmation. Peut être que tu pourrais commencé doucement dans la 3D ?

Regarde ce tutoriel consacré à la 3D: http://www.purebasic.fr/french/viewtopi ... 13&t=13747

Pourrais tu nous dire quel numéro de version de PB tu utilises ? Demo ou pas Demo ?

Enregistre ce code dans un dossier et exécutes le.

:arrow: Tu obtiendras un fichier Ogre.log. Ouvre le et postes nous le contenu.

Code : Tout sélectionner

Enumeration
  #Mainform
EndEnumeration

Global x.f, y.f, z.f

Declare GameStart(Width, Height)
Declare GameEnd()

GameStart(1024, 768)

Procedure GameStart(Width, Height)
  InitEngine3D(#PB_Engine3D_DebugLog) : InitKeyboard() : InitSprite() : InitMouse()
  
  OpenWindow(#Mainform,0, 0, Width, Height, "Ogre 3D Test", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  BindEvent(#PB_Event_CloseWindow, @GameEnd())
  
  OpenWindowedScreen(WindowID(#Mainform), 0, 0, Width, Height)
  
  ;Light & Shadow
  AmbientColor(RGB(127, 127, 127))
  CreateLight(#PB_Any,RGB(151, 251, 151), -5, 10, 5)
    
  ;Camera
  CreateCamera(0, 0, 0,100,100)
  CameraBackColor(0, RGB(145, 182, 201))
  MoveCamera(0, 0, 5, 10, #PB_Absolute)  
  CameraLookAt(0, 0,0,0)   
  
  Mesh = CreateCube(-1, 2)
  Entity = CreateEntity(-1, MeshID(Mesh), #PB_Material_None)
     
  Repeat
    Repeat : Until WindowEvent() = 0
    
    If ExamineKeyboard()
      If KeyboardPushed (#PB_Key_Escape)
        GameEnd()
      EndIf
    EndIf
    
    RotateEntity(Entity, 0.2, 0.2, 0.2, #PB_Relative)
    
    RenderWorld()
    FlipBuffers()  
  ForEver
EndProcedure

Procedure GameEnd()
  End
EndProcedure

Re: PureBasic et Windows 10.

Publié : dim. 01/nov./2015 16:44
par Kwai chang caine
Falsam a écrit :Si quelqu'un d'autres peut faire un test ? merci :wink:
Tes désirs sont des ordres 8)
Sitôt demandé, sitôt effectué :wink:

Ecran noir, bruit pas content et plantage avec mon ROG tout neuf W10 et la v5.40 LTS (X86)
compilateur pas content a écrit :[COMPILATEUR] Fichier:
[COMPILATEUR] Ligne 126: Avertissement: La fonction 'EntityPhysicBody()' est obsolete.
[COMPILATEUR] Fichier:
[COMPILATEUR] Ligne 246: Avertissement: La fonction 'EntityPhysicBody2()' est obsolete.
[COMPILATEUR] Fichier:
[COMPILATEUR] Ligne 271: Avertissement: La fonction 'EntityPhysicBody3()' est obsolete.
Compilation terminée avec 3 avertissement(s).
Attente du démarrage du programme...
Type d'exécutable: Windows - x86 (32bit)
Exécutable démarré.
L'exécutable de débogage se ferme de façon inattendue.

Re: PureBasic et Windows 10.

Publié : dim. 01/nov./2015 16:51
par falsam
Merci Kwai chang caine.

Pourrais tu exécuter le code de test ? En principe tu as un fichier Ogre.log. Pourrais tu en faire une copie ?

Re: PureBasic et Windows 10.

Publié : dim. 01/nov./2015 17:55
par Kwai chang caine
Tes désirs sont toujours des ordres MAITRE
Image
Tu viens d'épuiser ton 2e vœux, ali baba :mrgreen:

Alors..
Sortir le chien
Brosser la moquette
Acheter une brosse avant
s'occuper de bobonne
Ah non, ça c'est ma liste de corvées de ce week-end :oops:

Image
l'ogre a écrit :17:49:11: Creating resource group General
17:49:11: Creating resource group Internal
17:49:11: Creating resource group Autodetect
17:49:11: SceneManagerFactory for type 'DefaultSceneManager' registered.
17:49:11: Registering ResourceManager for type Material
17:49:11: Registering ResourceManager for type Mesh
17:49:11: Registering ResourceManager for type Skeleton
17:49:11: MovableObjectFactory for type 'ParticleSystem' registered.
17:49:11: OverlayElementFactory for type Panel registered.
17:49:11: OverlayElementFactory for type BorderPanel registered.
17:49:11: OverlayElementFactory for type TextArea registered.
17:49:11: Registering ResourceManager for type Font
17:49:11: ArchiveFactory for archive type FileSystem registered.
17:49:11: ArchiveFactory for archive type Zip registered.
17:49:11: ArchiveFactory for archive type EmbeddedZip registered.
17:49:11: DDS codec registering
17:49:11: FreeImage version: 3.10.0
17:49:11: This program uses FreeImage, a free, open source image library supporting all common bitmap formats. See http://freeimage.sourceforge.net for details
17:49:11: Supported formats: bmp,ico,jpg,jif,jpeg,jpe,koa,iff,lbm,pbm,pbm,pcd,pcx,pgm,pgm,png,ppm,ppm,ras,tga,targa,tif,tiff,wap,wbmp,wbm,psd,cut,xbm,xpm,dds,gif,g3,sgi,j2k,j2c,jp2
17:49:11: PVRTC codec registering
17:49:11: Registering ResourceManager for type HighLevelGpuProgram
17:49:11: Registering ResourceManager for type Compositor
17:49:11: MovableObjectFactory for type 'Entity' registered.
17:49:11: MovableObjectFactory for type 'Light' registered.
17:49:11: MovableObjectFactory for type 'BillboardSet' registered.
17:49:11: MovableObjectFactory for type 'ManualObject' registered.
17:49:11: MovableObjectFactory for type 'BillboardChain' registered.
17:49:11: MovableObjectFactory for type 'RibbonTrail' registered.
17:49:11: *-*-* OGRE Initialising
17:49:11: *-*-* Version 1.8.2 (Byatis)
17:49:11: D3D9 : Direct3D9 Rendering Subsystem created.
17:49:11: D3D9: Driver Detection Starts
17:49:11: D3D9: Driver Detection Ends
17:49:11: Particle Emitter Type 'Point' registered
17:49:11: Particle Emitter Type 'Box' registered
17:49:11: Particle Emitter Type 'Ellipsoid' registered
17:49:11: Particle Emitter Type 'Cylinder' registered
17:49:11: Particle Emitter Type 'Ring' registered
17:49:11: Particle Emitter Type 'HollowEllipsoid' registered
17:49:11: Particle Affector Type 'LinearForce' registered
17:49:11: Particle Affector Type 'ColourFader' registered
17:49:11: Particle Affector Type 'ColourFader2' registered
17:49:11: Particle Affector Type 'ColourImage' registered
17:49:11: Particle Affector Type 'ColourInterpolator' registered
17:49:11: Particle Affector Type 'Scaler' registered
17:49:11: Particle Affector Type 'Rotator' registered
17:49:11: Particle Affector Type 'DirectionRandomiser' registered
17:49:11: Particle Affector Type 'DeflectorPlane' registered
17:49:11: PCZone Factory Type 'ZoneType_Default' registered
17:49:11: CPU Identifier & Features
17:49:11: -------------------------
17:49:11: * CPU ID: GenuineIntel: Intel(R) Core(TM) i7-4720HQ CPU @ 2.60GHz
17:49:11: * SSE: yes
17:49:11: * SSE2: yes
17:49:11: * SSE3: yes
17:49:11: * MMX: yes
17:49:11: * MMXEXT: yes
17:49:11: * 3DNOW: no
17:49:11: * 3DNOWEXT: no
17:49:11: * CMOV: yes
17:49:11: * TSC: yes
17:49:11: * FPU: yes
17:49:11: * PRO: yes
17:49:11: * HT: no
17:49:11: -------------------------
17:49:11: D3D9 : Subsystem Initialising
17:49:11: Registering ResourceManager for type Texture
17:49:11: Registering ResourceManager for type GpuProgram
17:49:11: ***************************************
17:49:11: *** D3D9 : Subsystem Initialised OK ***
17:49:11: ***************************************
17:49:11: SceneManagerFactory for type 'OctreeSceneManager' registered.
17:49:11: SceneManagerFactory for type 'BspSceneManager' registered.
17:49:11: Registering ResourceManager for type BspLevel
17:49:11: D3D9RenderSystem::_createRenderWindow "PureBasic Ogre", 1024x768 windowed miscParams: FSAA=0 displayFrequency=0 externalWindowHandle=657440 vsync=true
17:49:11: D3D9 : Created D3D9 Rendering Window 'PureBasic Ogre' : 1024x768, 32bpp
17:49:11: D3D9: Vertex texture format supported - PF_L8
17:49:11: D3D9: Vertex texture format supported - PF_L16
17:49:11: D3D9: Vertex texture format supported - PF_A8
17:49:11: D3D9: Vertex texture format supported - PF_A4L4
17:49:11: D3D9: Vertex texture format supported - PF_BYTE_LA
17:49:11: D3D9: Vertex texture format supported - PF_R5G6B5
17:49:11: D3D9: Vertex texture format supported - PF_B5G6R5
17:49:11: D3D9: Vertex texture format supported - PF_A4R4G4B4
17:49:11: D3D9: Vertex texture format supported - PF_A1R5G5B5
17:49:11: D3D9: Vertex texture format supported - PF_A8R8G8B8
17:49:11: D3D9: Vertex texture format supported - PF_B8G8R8A8
17:49:11: D3D9: Vertex texture format supported - PF_A2R10G10B10
17:49:11: D3D9: Vertex texture format supported - PF_A2B10G10R10
17:49:11: D3D9: Vertex texture format supported - PF_DXT1
17:49:11: D3D9: Vertex texture format supported - PF_DXT2
17:49:11: D3D9: Vertex texture format supported - PF_DXT3
17:49:11: D3D9: Vertex texture format supported - PF_DXT4
17:49:11: D3D9: Vertex texture format supported - PF_DXT5
17:49:11: D3D9: Vertex texture format supported - PF_FLOAT16_RGB
17:49:11: D3D9: Vertex texture format supported - PF_FLOAT16_RGBA
17:49:11: D3D9: Vertex texture format supported - PF_FLOAT32_RGB
17:49:11: D3D9: Vertex texture format supported - PF_FLOAT32_RGBA
17:49:11: D3D9: Vertex texture format supported - PF_X8R8G8B8
17:49:11: D3D9: Vertex texture format supported - PF_R8G8B8A8
17:49:11: D3D9: Vertex texture format supported - PF_DEPTH
17:49:11: D3D9: Vertex texture format supported - PF_SHORT_RGBA
17:49:11: D3D9: Vertex texture format supported - PF_FLOAT16_R
17:49:11: D3D9: Vertex texture format supported - PF_FLOAT32_R
17:49:11: D3D9: Vertex texture format supported - PF_SHORT_GR
17:49:11: D3D9: Vertex texture format supported - PF_FLOAT16_GR
17:49:11: D3D9: Vertex texture format supported - PF_FLOAT32_GR
17:49:11: D3D9: Vertex texture format supported - PF_SHORT_RGB
17:49:11: D3D9: Vertex texture format supported - PF_PVRTC_RGB2
17:49:11: D3D9: Vertex texture format supported - PF_PVRTC_RGBA2
17:49:11: D3D9: Vertex texture format supported - PF_PVRTC_RGB4
17:49:11: D3D9: Vertex texture format supported - PF_PVRTC_RGBA4
17:49:11: D3D9: Vertex texture format supported - PF_R8
17:49:11: D3D9: Vertex texture format supported - PF_RG8
17:49:11: RenderSystem capabilities
17:49:11: -------------------------
17:49:11: RenderSystem Name: Direct3D9 Rendering Subsystem
17:49:11: GPU Vendor: intel
17:49:11: Device Name: Monitor-1-Intel(R) HD Graphics 4600
17:49:11: Driver Version: 10.18.15.4256
17:49:11: * Fixed function pipeline: yes
17:49:11: * Hardware generation of mipmaps: yes
17:49:11: * Texture blending: yes
17:49:11: * Anisotropic texture filtering: yes
17:49:11: * Dot product texture operation: yes
17:49:11: * Cube mapping: yes
17:49:11: * Hardware stencil buffer: yes
17:49:11: - Stencil depth: 8
17:49:11: - Two sided stencil support: yes
17:49:11: - Wrap stencil values: yes
17:49:11: * Hardware vertex / index buffers: yes
17:49:11: * Vertex programs: yes
17:49:11: * Number of floating-point constants for vertex programs: 256
17:49:11: * Number of integer constants for vertex programs: 16
17:49:11: * Number of boolean constants for vertex programs: 16
17:49:11: * Fragment programs: yes
17:49:11: * Number of floating-point constants for fragment programs: 224
17:49:11: * Number of integer constants for fragment programs: 16
17:49:11: * Number of boolean constants for fragment programs: 16
17:49:11: * Geometry programs: no
17:49:11: * Number of floating-point constants for geometry programs: 0
17:49:11: * Number of integer constants for geometry programs: 0
17:49:11: * Number of boolean constants for geometry programs: 0
17:49:11: * Supported Shader Profiles: hlsl ps_1_1 ps_1_2 ps_1_3 ps_1_4 ps_2_0 ps_2_a ps_2_b ps_2_x ps_3_0 vs_1_1 vs_2_0 vs_2_a vs_2_x vs_3_0
17:49:11: * Texture Compression: yes
17:49:11: - DXT: yes
17:49:11: - VTC: no
17:49:11: - PVRTC: no
17:49:11: * Scissor Rectangle: yes
17:49:11: * Hardware Occlusion Query: yes
17:49:11: * User clip planes: yes
17:49:11: * VET_UBYTE4 vertex element type: yes
17:49:11: * Infinite far plane projection: yes
17:49:11: * Hardware render-to-texture: yes
17:49:11: * Floating point textures: yes
17:49:11: * Non-power-of-two textures: yes
17:49:11: * Volume textures: yes
17:49:11: * Multiple Render Targets: 4
17:49:11: - With different bit depths: yes
17:49:11: * Point Sprites: yes
17:49:11: * Extended point parameters: yes
17:49:11: * Max Point Size: 256
17:49:11: * Vertex texture fetch: yes
17:49:11: * Number of world matrices: 0
17:49:11: * Number of texture units: 8
17:49:11: * Stencil buffer depth: 8
17:49:11: * Number of vertex blend matrices: 0
17:49:11: - Max vertex textures: 4
17:49:11: - Vertex textures shared: no
17:49:11: * Render to Vertex Buffer : no
17:49:11: * DirectX per stage constants: yes
17:49:11: DefaultWorkQueue('Root') initialising on thread main.
17:49:11: Particle Renderer Type 'billboard' registered
[/quote]

Re: PureBasic et Windows 10.

Publié : dim. 01/nov./2015 18:17
par falsam
Merci encore une fois Kwai chang caine. Rien d'anormal dans ce log !!

Tu as pu voir le cube en rotation ?

Re: PureBasic et Windows 10.

Publié : dim. 01/nov./2015 19:02
par Micheao
Bonsoir falsam
j'ai testé ton premier code ( celui avec le char on dois detruire une pyramide en cube ) et il marche trés bien avec Purebasic 5.40 sous windows 10

Re: PureBasic et Windows 10.

Publié : dim. 01/nov./2015 19:10
par falsam
Micheao a écrit :Bonsoir falsam
j'ai testé ton premier code ( celui avec le char on dois detruire une pyramide en cube ) et il marche trés bien avec Purebasic 5.40 sous windows 10
Merci Micheao. je me demande si Kwai chang caine n'a pas mis son windows 10 en mode compatibilité Windows 95 :mrgreen:

Re: PureBasic et Windows 10.

Publié : dim. 01/nov./2015 20:58
par Kwai chang caine
Que neni mon ami...du W10 tout neuf de chez W10 and W10...du republic of gamers moooooosssieeeeuuu !!! :mrgreen:

Bien sur que je l'ai vu le joli cube bleu qui tourne....super joli au passage 8)