How use Window3D

Just starting out? Need help? Post your questions and find answers here.
matty47
User
User
Posts: 35
Joined: Fri Sep 26, 2003 10:21 pm

How use Window3D

Post by matty47 »

Coming back to PB after a long hiatus. Tried the following code to see how a WIndow3D would work but could not get the 3d window to open. Obviously I have missed something. Any help greatly appreciated.

Code: Select all

If Not InitEngine3D()
  MessageRequester("Error","Unable to initialise 3d Engine",#PB_MessageRequester_Ok|#PB_MessageRequester_Error)
EndIf

  If Not InitSprite()
  MessageRequester("Error","Unable to initialise sprite",#PB_MessageRequester_Ok|#PB_MessageRequester_Error)
  End
EndIf

InitKeyboard()
InitMouse()

win = OpenWindow(#PB_Any,0,0,1080,720,"My 3D Window",#PB_Window_SystemMenu | #PB_Window_ScreenCentered|#PB_Window_SizeGadget)
If Not win
  MessageRequester("Error","Could not open window",#PB_MessageRequester_Ok|#PB_MessageRequester_Error)
EndIf
ButtonGadget(0,0,135,45,20,"Quit")


If Not OpenWindowedScreen(WindowID(win),0,0,1080,720,#True,0,0)
 MessageRequester("Error","Could not open windowed screen",#PB_MessageRequester_Ok|#PB_MessageRequester_Error)
EndIf

win3d=OpenWindow3D(#PB_Any,50,50,640,480,"[color='ffffff00']A 3D Window",#PB_Window3D_SizeGadget)
If Not win3d
  MessageRequester("Error","Could not open window3d",#PB_MessageRequester_Ok|#PB_MessageRequester_Error)
EndIf


Repeat
  
  Repeat
    event=WindowEvent()
    
    Select event
      Case #PB_Event_Gadget
        If EventGadget()=0
          End
        EndIf
        
      Case #PB_Event_CloseWindow
        End
    EndSelect
  Until event=0
  
  FlipBuffers()
  
  Delay(1)
ForEver
User avatar
mk-soft
Always Here
Always Here
Posts: 6252
Joined: Fri May 12, 2006 6:51 pm
Location: Germany

Re: How use Window3D

Post by mk-soft »

Take a look at the gadget3d example.

The template for the GUI must also be loaded and something else.
My Projects ThreadToGUI / OOP-BaseClass / EventDesigner V3
PB v3.30 / v5.75 - OS Mac Mini OSX 10.xx - VM Window Pro / Linux Ubuntu
Downloads on my Webspace / OneDrive
wombats
Enthusiast
Enthusiast
Posts: 718
Joined: Thu Dec 29, 2011 5:03 pm

Re: How use Window3D

Post by wombats »

You need to add a path to the GUI skin, a camera, and call RenderWorld().

Code: Select all

If Not InitEngine3D()
  MessageRequester("Error","Unable to initialise 3d Engine",#PB_MessageRequester_Ok|#PB_MessageRequester_Error)
EndIf

If Not InitSprite()
  MessageRequester("Error","Unable to initialise sprite",#PB_MessageRequester_Ok|#PB_MessageRequester_Error)
  End
EndIf

InitKeyboard()
InitMouse()

win = OpenWindow(#PB_Any,0,0,1080,720,"My 3D Window",#PB_Window_SystemMenu | #PB_Window_ScreenCentered|#PB_Window_SizeGadget)
If Not win
  MessageRequester("Error","Could not open window",#PB_MessageRequester_Ok|#PB_MessageRequester_Error)
EndIf
;ButtonGadget(0,0,135,45,20,"Quit")


If Not OpenWindowedScreen(WindowID(win),0,0,1080,720,#True,0,0)
  MessageRequester("Error","Could not open windowed screen",#PB_MessageRequester_Ok|#PB_MessageRequester_Error)
EndIf

Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/GUI", #PB_3DArchive_FileSystem)

CreateCamera(0, 0, 0, 100, 100)

win3d=OpenWindow3D(#PB_Any,50,50,640,480,"[color='ffffff00']A 3D Window",#PB_Window3D_SizeGadget)
If Not win3d
  MessageRequester("Error","Could not open window3d",#PB_MessageRequester_Ok|#PB_MessageRequester_Error)
EndIf

ButtonGadget3D(0, 150, 40, 200, 50, "Quit")

Repeat
  
  Repeat
    event=WindowEvent()
    
    Select event        
      Case #PB_Event_CloseWindow
        quit = #True
    EndSelect
  Until event=0
  
  Repeat
    Event = WindowEvent3D()
    
    Select Event
      Case #PB_Event3D_CloseWindow
        If EventWindow3D() = win3d
          quit = #True
        EndIf
        
      Case #PB_Event3D_Gadget
        If EventGadget3D() = 0
          quit = #True
        EndIf
        
    EndSelect
  Until Event = 0
  
  If ExamineKeyboard() And ExamineMouse()
    Input$ = KeyboardInkey()
    
    InputEvent3D(MouseX(), MouseY(), MouseButton(#PB_MouseButton_Left), Input$, 0)
  EndIf
  
  If KeyboardPushed(#PB_Key_Escape)
    quit = #True
  EndIf
  
  RenderWorld()
  
  FlipBuffers()
  
  Delay(1)
Until quit
Post Reply