Hello there,
I just registered and downloaded the Linux version of Purebasic 4.01. Of course, I was curious about all that 3D stuff, so I picked the camera.pb demo and wanted to run it. Unfortunately, the compiler complains about not being able to find "Screen3DRequester.pb". The file is not in the archive I downloaded thus it is not in the examples folder. Can someone help me setting everything up properly?! I'm using Ubuntu Linux 7.04 with SDL, Ogre 1.0.6 and everything installed (including the *-dev packages provided through APT).
P.S.:
Newbie Question regarding "Screen3DRequester.pb"
Here it is:
Code: Select all
;
; ------------------------------------------------------------
;
; 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" , "640 x 480")
WindowedScreenMode$ = ReadPreferenceString("WindowedScreenMode", "512 x 384")
If OpenWindow(#WINDOW_Screen3DRequester, 0, 0, 396, 205, "PureBasic - 3D Demos", #PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_Invisible)
If CreateGadgetList(WindowID(#WINDOW_Screen3DRequester))
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, 200) : Top+25
ComboBoxGadget (#GADGET_WindowedModes, 190, Top, 150, 200) : 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()
If Width <> PreviousWidth Or Height <> PreviousHeight
If Depth <> 8
AddGadgetItem(#GADGET_ScreenModes, -1, Str(Width)+" x "+Str(Height))
EndIf
EndIf
PreviousWidth = Width
PreviousHeight = Height
Wend
EndIf
DesktopWidth = 1024 ; GetSystemMetrics_(#SM_CXSCREEN)
DesktopHeight = 768 ; GetSystemMetrics_(#SM_CYSCREEN)
NbScreenModes = 7
Restore WindowedScreenDimensions
Repeat
Read CurrentWidth
Read 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
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
ScreenWidth = Val(StringField(ScreenMode$, 1, " "))
ScreenHeight = Val(Right(ScreenMode$, Len(ScreenMode$)-FindString(ScreenMode$, "x", 1)-1))
Screen3DRequester_FullScreen = FullScreen ; Global variable, for the Screen3DEvents
If FullScreen
Result = OpenScreen(ScreenWidth, ScreenHeight, 16, "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
If StartDrawing(ScreenOutput())
FrontColor(RGB(255, 255, 255))
DrawingMode(1)
DrawText(0, 0, StrF(Engine3DFrameRate(0),1)+" FPS")
DrawText(0, 20, Str(CountRenderedTriangles())+" Triangles")
StopDrawing()
EndIf
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