I could make it work on Window 10 by disabling
;WorldShadows(#PB_Shadow_Additive). It makes renderWorld() hang or crash. I did not try other arguments.
With opengl it's extremely slow/laggy. I'm not sure about my system. dxdiag says direct x 12 and I have read that Windows comes with opengl. I have nvidia drivers installed for the card.
Here is my debug code, printing most function call results. All non-zero.
Code:
; GenericJoint - exemple voiture - pf Shadoko - 2018
OpenConsole()
Procedure deb(i.i)
PrintN(Str(i))
EndProcedure
Procedure debs(s.s)
PrintN(s)
EndProcedure
Procedure matiere(num,dx,dy,c1,c2, brillance=$888888)
deb(CreateTexture(num,dx,dy))
deb(StartDrawing(TextureOutput(num)))
DrawingMode(#PB_2DDrawing_AllChannels )
Box(0,0,dx,dy,c2)
Box(2,2,dx-4,dy-4,c1)
StopDrawing()
CreateMaterial(num, TextureID(num))
If brillance
SetMaterialColor(num, #PB_Material_SpecularColor, brillance)
MaterialShininess(num, 20)
EndIf
EndProcedure
EnableExplicit
Define.f angle,sens,dsens,h
Define i,ii,j,c,l,dis=0,vdis=2<<dis*1,ex,ey,ombre
deb(InitEngine3D())
deb(InitSprite())
deb(InitKeyboard())
deb(InitMouse())
deb(OpenWindow(0, 0, 0, 0,0, " Test GenericJoint - curseur + F2(camera) + F3(ombres)",#PB_Window_Maximize))
ex=WindowWidth (0,#PB_Window_InnerCoordinate)
ey=WindowHeight(0,#PB_Window_InnerCoordinate)
deb(OpenWindowedScreen(WindowID(0), 0, 0, ex, ey, 0, 0, 0))
deb(CreateLight(0,$888888, 5000, 3000, 2000))
SetLightColor(0, #PB_Light_SpecularColor, $ffffff)
AmbientColor($777777)
deb(CreateCamera(0, 0, 0, 100, 100))
MoveCamera(0,0,10,-20)
CameraBackColor(0,$888888)
;WorldDebug(#PB_World_DebugBody)
;WorldShadows(#PB_Shadow_Additive)
matiere(0,256,256,$444444,$111111)
matiere(1,256,256,$884444,$441111)
matiere(2,256,256,$ffff00,$444400)
matiere(3,256,256,$ffffff,$444444)
matiere(4,256,256,$4444ff,$4444ff)
matiere(5,256,256,$44ffff,$00aaaa)
matiere(10,256,256,$888888,$222222)
;---------------------piste
deb(CreatePlane(0,200,200,1,1,200,200))
deb(CreateEntity(100,MeshID(0),MaterialID(10),0,0,0))
CreateEntityBody(100,#PB_Entity_StaticBody,1,0,1)
deb(CreateCone(0,4,2,32,4))
For i=200 To 219
deb(CreateEntity(i,MeshID(0),MaterialID(4),Random(100)-50,1,Random(100)-50))
CreateEntityBody(i,#PB_Entity_StaticBody,1,0,1)
Next
deb(CreateCube(0,4))
For i=300 To 339
deb(CreateEntity(i,MeshID(0),MaterialID(1),Random(100)-50,-1,Random(100)-50))
RotateEntity(i,25,Random(360),0)
CreateEntityBody(i,#PB_Entity_StaticBody,1,0,1)
Next
deb(CreateCube(0,0.1))
TransformMesh(0,0,0.025,0,1,0.5,50,0,0,0)
UpdateMeshBoundingBox(0)
For i=400 To 439
deb(CreateEntity(i,MeshID(0),MaterialID(2),Random(100)-50,0,Random(100)-50))
RotateEntity(i,0,Random(360),0)
CreateEntityBody(i,#PB_Entity_StaticBody,1,0,1)
Next
;--------------------- voiture
h=2
deb(CreateCube(0,2))
TransformMesh(0,0,0,0,0.4,0.2,0.8,0,0,0)
UpdateMeshBoundingBox(0)
deb(CreateEntity(0, MeshID(0), MaterialID(5),0,h,0))
CreateEntityBody(0, #PB_Entity_BoxBody ,4, 0.0,0.3)
SetEntityCollisionFilter(0, 1,2)
SetEntityAttribute(0,#PB_Entity_LinearSleeping,0)
;---------------------roues
deb(CreateCylinder(2, 0.3, 0.3))
For j=-1 To 1 Step 2
For i=-1 To 1 Step 2:c+1
deb(CreateEntity(c, MeshID(2), MaterialID(0),0.6*i, -0.2+h, -0.8*j))
CreateEntityBody(c, #PB_Entity_CylinderBody, 1, 0,0.7)
SetEntityCollisionFilter(c, 1,2)
RotateEntity(c,0,0,90)
deb(GenericJoint(c, EntityID(0),0.6*i, -0.2, -0.8*j, EntityID(c), 0, 0, 0))
SetJointAttribute(c, #PB_Joint_EnableSpring,1,1)
SetJointAttribute(c, #PB_Joint_Damping,0.005,1)
SetJointAttribute(c, #PB_Joint_Stiffness,200,1)
SetJointAttribute(c, #PB_Joint_NoLimit, 0, 3)
Next
Next
deb(CreateNode(0,0,0.0,-1))
AttachEntityObject(0,"",NodeID(0))
deb(CreateNode(1,0,0.1,0))
AttachEntityObject(0,"",NodeID(1))
;End
Repeat
debs("loop")
While WindowEvent() : Wend
Delay(1)
ExamineMouse()
ExamineKeyboard()
If KeyboardReleased(#PB_Key_F2):dis=(dis+1)%3:vdis=2<<dis*1:EndIf
If KeyboardReleased(#PB_Key_F3):ombre=1-ombre:If ombre:WorldShadows(#PB_Shadow_Additive):Else:WorldShadows(#PB_Shadow_None):EndIf:EndIf
debs("loop1")
sens=(GetEntityAttribute(1,#PB_Entity_AngularVelocity)+GetEntityAttribute(2,#PB_Entity_AngularVelocity))/2
debs("loop2")
angle+(Bool(KeyboardPushed(#PB_Key_Left))-Bool(KeyboardPushed(#PB_Key_Right)))*-0.02:angle/(1+sens*0.002)
debs("loop3")
dsens=(Bool(KeyboardPushed(#PB_Key_Up))-Bool(KeyboardPushed(#PB_Key_Down))) * 100
debs("loop4")
SetJointAttribute(1,#PB_Joint_Position,angle,4)
debs("loop5")
SetJointAttribute(2,#PB_Joint_Position,angle,4)
debs("loop6")
For i=1 To 4
ApplyEntityTorque(i,0,dsens/50,0,#PB_Local)
Next
debs("loop7")
CameraFollow(0, NodeID(1), -180,NodeY(0)+vdis, 2*vdis, 0.1, 0.1)
debs("loop8")
RenderWorld()
debs("loop9")
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)