Si certains d'entres vous ont deux moniteurs sur leurs PC essayer ce code pour voir ce qu'il se passe.
Code : Tout sélectionner
Define.f CamX, CamY, CamZ
Procedure.w MouseWheelDelta()
wz.w = ((EventwParam()>>16)&$FFFF)
ProcedureReturn -(wz/100)
EndProcedure
InitEngine3D()
InitKeyboard()
InitSprite()
window = OpenWindow(#PB_Any,0,0,1024,768,"How to use mousewheel to zoom in 3D")
OpenWindowedScreen(WindowID(window),0,0,1024,768)
;
; Ambiance
AmbientColor(RGB(255, 255, 255))
CreateLight(#PB_Any,RGB(255, 255, 255), 3,50,50)
;
;axes
Red = RGB(255, 0, 0)
Green = RGB(0, 255, 0)
Blue = RGB(0, 255, 255)
AxeX = CreateLine3D(#PB_Any, -10,0,0, Red, 10, 0, 0, Red)
AxeY = CreateLine3D(#PB_Any, 0,-10,0, Green, 0, 10, 0, Green)
AxeZ = CreateLine3D(#PB_Any, 0,0,-10, Blue, 0, 0, 10, Blue)
;
; Entity
Mesh = CreateCube(#PB_Any, 2)
; Texture
Texture = CreateTexture(#PB_Any,512,512)
StartDrawing(TextureOutput(Texture))
Box(0,0,512,512,RGB(0, 0, 0))
Box(1,1,510,510,RGB(255, 216, 0))
StopDrawing()
Material = CreateMaterial(#PB_Any,TextureID(texture))
Entity = CreateEntity(#PB_Any, MeshID(Mesh), MaterialID(Material))
;
; Camera
Camera = CreateCamera(#PB_Any,0,0,100,100)
CameraBackColor(Camera, RGB(105, 105, 105))
CamX=2.0
CamY=1.0
CamZ=10
CameraLookAt(Camera,0,0,0)
While #True
Event = WindowEvent()
Select Event
Case #WM_MOUSEWHEEL
CamZ=CamZ+(MouseWheelDelta())
EndSelect
ExamineKeyboard()
If Event = #PB_Event_CloseWindow Or KeyboardPushed(#PB_Key_Escape)
Break
EndIf
If KeyboardPushed(#PB_Key_Left)
CamX-0.2
ElseIf KeyboardPushed(#PB_Key_Right)
CamX+0.2
EndIf
If KeyboardPushed(#PB_Key_Up)
CamY+0.2
ElseIf KeyboardPushed(#PB_Key_Down)
CamY-0.2
EndIf
MoveCamera(camera, CamX, CamY, CamZ, #PB_Absolute)
CameraLookAt(Camera, EntityX(Entity), EntityY(Entity), EntityZ(Entity))
ClearScreen(RGB(0, 0, 0))
RenderWorld()
FlipBuffers()
Wend