Engine3D
Publié : sam. 28/mars/2009 19:35
Bonjour
Voila j'ai un probleme avec la fonction InitEngine3D()
J'ai essayé avec les exemple fourni dans PureBasic
Voila ce qui ce passe lorsque le programme arrive à cette fonction :

Et voila les codes sources
Entity.pb :
Screen3DRequester.pb :
Dans le dossier /Engine3D/ il y a :
- Entity.pb
- Screen3DRequester.pb
- Engine3D.dll
- Purebasic0.exe
- Ogre.log (apparu après l'exécution du programme)
J'utilise PB V 4.30 Démo avec l'éditeur JaPBe V3
Dans les options du projet j'ai coché la case "EXE temp dans rép. source"
Voila
Merci de m'expliquer comment faire pour que ça fonctionne car j'aimerai pourvoir l'utiliser ( surtout pour Window3D)
Merci d'avance
Cordialement
Jagang
Voila j'ai un probleme avec la fonction InitEngine3D()
J'ai essayé avec les exemple fourni dans PureBasic
Voila ce qui ce passe lorsque le programme arrive à cette fonction :

Et voila les codes sources
Entity.pb :
Code : Tout sélectionner
;
; ------------------------------------------------------------
;
; PureBasic - Entity
;
; (c) 2002 - Fantaisie Software
;
; ------------------------------------------------------------
;
IncludeFile "Screen3DRequester.pb"
Define.f KeyX, KeyY, MouseX, MouseY
OpenConsole()
PrintN("InitEngine3D()")
Input()
If InitEngine3D()
Add3DArchive("Data" , #PB_3DArchive_FileSystem)
Add3DArchive("Data/skybox.zip", #PB_3DArchive_Zip)
InitSprite()
InitKeyboard()
InitMouse()
PrintN("Screen3DRequester()")
Input()
If Screen3DRequester()
LoadMesh (0, "robot.mesh")
PrintN("LoadMesh")
Input()
CreateMaterial(0, LoadTexture(0, "clouds.jpg"))
CreateMaterial(1, LoadTexture(1, "r2skin.jpg"))
CreateEntity(0, MeshID(0), MaterialID(0))
CreateEntity(1, MeshID(0), MaterialID(1), -60, 0, 0)
CreateEntity(2, MeshID(0), MaterialID(1), 60, 0, 0)
AnimateEntity(0, "Walk")
PrintN("AnimateEntity")
Input()
SkyBox("desert07.jpg")
CreateCamera(0, 0, 0, 100, 100)
CameraLocate(0,0,0,100)
PrintN("CameraLocate")
Input()
Repeat
Screen3DEvents()
ClearScreen(RGB(0, 0, 0))
If ExamineKeyboard()
If KeyboardPushed(#PB_Key_Left)
KeyX = -1
ElseIf KeyboardPushed(#PB_Key_Right)
KeyX = 1
Else
KeyX = 0
EndIf
If KeyboardPushed(#PB_Key_Up)
KeyY = -1
ElseIf KeyboardPushed(#PB_Key_Down)
KeyY = 1
Else
KeyY = 0
EndIf
If KeyboardPushed(#PB_Key_PageUp)
RollZ = 3
Else
RollZ = 0
EndIf
If KeyboardPushed(#PB_Key_Add)
Frame.f+0.005
EndIf
EndIf
If ExamineMouse()
MouseX = -MouseDeltaX()/10
MouseY = -MouseDeltaY()/10
EndIf
RotateEntity(1, 0, 1, 0, #PB_Relative)
RotateEntity(2, 0, 1, 0, #PB_Relative)
RotateCamera(0, MouseY, MouseX, RollZ, #PB_Relative)
MoveCamera (0, KeyX, 0, KeyY)
RenderWorld()
Screen3DStats()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
EndIf
Else
MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf
End
Code : Tout sélectionner
;
; ------------------------------------------------------------
;
; PureBasic - Common 3D functions
;
; (c) 2003 - Fantaisie Software
;
; ------------------------------------------------------------
;
#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
Global Screen3DRequester_FullScreen, Screen3DRequester_ShowStats
Procedure Screen3DRequester()
OpenPreferences("Demos3D.prefs")
FullScreen = ReadPreferenceLong ("FullScreen" , 1)
FullScreenMode$ = ReadPreferenceString("FullScreenMode" , "640x480")
WindowedScreenMode$ = ReadPreferenceString("WindowedScreenMode", "512x384")
If OpenWindow(#WINDOW_Screen3DRequester, 0, 0, 396, 205, "PureBasic - 3D Demos", #PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_Invisible)
top = 6
ImageGadget (#GADGET_Logo, 6, top, 0, 0, LoadImage(0,"Data/PureBasicLogo.bmp"), #PB_Image_Border) : top+76
Frame3DGadget(#GADGET_Frame, 6, top, 384, 80, "", 0) : top+20
OptionGadget(#GADGET_FullScreen, 70, top, 100, 20, "Fullscreen") : top+25
OptionGadget(#GADGET_Windowed , 70, Top, 100, 20, "Windowed") : Top-25
ComboBoxGadget (#GADGET_ScreenModes , 190, Top, 150, 21) : Top+25
ComboBoxGadget (#GADGET_WindowedModes, 190, Top, 150, 21) : Top+45
ButtonGadget (#GADGET_Launch, 6, Top, 180, 25, "Launch", #PB_Button_Default)
ButtonGadget (#GADGET_Cancel, 200, Top, 190, 25, "Cancel")
If ExamineScreenModes()
While NextScreenMode()
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))
EndIf
Wend
EndIf
DesktopWidth = 1024 ; GetSystemMetrics_(#SM_CXSCREEN)
DesktopHeight = 768 ; GetSystemMetrics_(#SM_CYSCREEN)
NbScreenModes = 7
Restore WindowedScreenDimensions
Repeat
Read.l CurrentWidth
Read.l CurrentHeight
If CurrentWidth < DesktopWidth And CurrentHeight < DesktopHeight
AddGadgetItem(#GADGET_WindowedModes, -1, Str(CurrentWidth)+ "x"+Str(CurrentHeight))
NbScreenModes - 1
Else
NbScreenModes = 0
EndIf
Until NbScreenModes = 0
SetGadgetState(#GADGET_FullScreen, FullScreen)
SetGadgetState(#GADGET_Windowed , 1-FullScreen)
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)
CloseWindow(#WINDOW_Screen3DRequester)
EndIf
If Quit = 2 ; Launch button has been pressed
CreatePreferences("Demos3D.prefs")
WritePreferenceLong ("FullScreen" , FullScreen)
WritePreferenceString("FullScreenMode" , FullScreenMode$)
WritePreferenceString("WindowedScreenMode", WindowedScreenMode$)
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
If FullScreen
SetRefreshRate(RefreshRate)
Result = OpenScreen(ScreenWidth, ScreenHeight, ScreenDepth, "3D Demos")
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
- Entity.pb
- Screen3DRequester.pb
- Engine3D.dll
- Purebasic0.exe
- Ogre.log (apparu après l'exécution du programme)
J'utilise PB V 4.30 Démo avec l'éditeur JaPBe V3
Dans les options du projet j'ai coché la case "EXE temp dans rép. source"
Voila
Merci de m'expliquer comment faire pour que ça fonctionne car j'aimerai pourvoir l'utiliser ( surtout pour Window3D)
Merci d'avance
Cordialement
Jagang