purebasic and blitz3dsdk question
Posted: Sun Jun 10, 2007 2:33 pm
I'm having problems with sending input to the bbGrahics3d window
after adding this line
the bbGraphics3d
no longer respond after the handle is changed
I'm wondering if a callback is needed.
there is a command in the sdk
I'm wondering if this holds the key but I dona't understand
the documentation.
PureBasic Visual Designer v3.95 build 1485 (PB4Code)
Codetags by Rings 
after adding this line
Code: Select all
bbSetBlitz3DHWND ( WindowID(#Window_0))
Code: Select all
If bbKeyDown (#KEY_A)
I'm wondering if a callback is needed.
there is a command in the sdk
Code: Select all
bbSetBlitz3DEventCallback ( callback )
the documentation.
PureBasic Visual Designer v3.95 build 1485 (PB4Code)
Code: Select all
Enumeration
#Window_0
EndEnumeration
;- Gadget Constants
;
Enumeration
#Button_0
#Image_2
EndEnumeration
;- Image Plugins
;- Image Globals
Global Image0
;- Catch Images
Image0 = CatchImage(0, ?Image0)
;- Images
DataSection
Image0:
IncludeBinary "boing.png"
EndDataSection
Procedure Open_Window_0()
If OpenWindow(#Window_0, 209, -11, 1024, 768, "New window ( 0 )", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
If CreateGadgetList(WindowID(#Window_0))
ButtonGadget(#Button_0, 900, 20, 45, 25, "")
ImageGadget(#Image_2, 128, 24, 800, 600, Image0)
EndIf
EndIf
EndProcedure
Declare blitzroutine()
Open_Window_0()
; Play with this value!
#NUM_CUBES = 200 ; 1000 - 2000 fine here on Core 2 Duo 6300 / Geforce 6800 GS
; Include Blitz3D engine...
IncludeFile "blitz3dsdk.pbi"
bbSetBlitz3DHWND ( WindowID(#Window_0))
; Initialise Blitz3D engine...
bbBeginBlitz3D ()
; Set debug mode (it's on by default -- just added this so you can turn it off)...
bbSetBlitz3DDebugMode (0) ; 1 = DEBUG ON, 0 = DEBUG OFF
; Open dislay...
bbGraphics3D (800,600,32,2 )
; Camera...
Global cam = bbCreateCamera ()
bbCameraClsColor (cam, 64, 128, 180)
bbCameraRange (cam, 0.1, 1000)
bbMoveEntity (cam, 0, 5, 0)
; Light...
light = bbCreateLight ()
bbMoveEntity (light, -10, 5, -1)
; Grass...
grasstex = bbLoadTexture ("grass.png")
plane = bbCreatePlane ()
bbEntityTexture (plane, grasstex)
; Cube (will be hidden and 20 copies made)...
cubetex = bbLoadTexture ("boing.png")
Global cube = bbCreateCube ()
bbMoveEntity (cube, 0, 0, 5)
bbEntityTexture (cube, cubetex)
bbHideEntity (cube)
; Point light to centre of world...
bbPointEntity (light, cube)
; Create duplicates of cube entity...
Global Dim cubes (#NUM_CUBES)
For dupe = 1 To #NUM_CUBES
cubes (dupe) = bbCopyEntity (cube)
bbPositionEntity (cubes (dupe), Random (50) - 25, Random (25) + 2, Random (50))
bbTurnEntity (cubes (dupe), Random (720) - 360, Random (720) - 360, Random (720) - 360)
Next
Repeat ; Start of the event loop
blitzroutine()
Event = WindowEvent() ; This line waits until an event is received from Windows
If Event<>0
WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
GadgetID = EventGadget() ; Is it a gadget event?
EventType = EventType() ; The event type
;You can place code here, and use the result as parameters for the procedures
If Event = #PB_Event_Gadget
If GadgetID = #Button_0
ElseIf GadgetID = #Image_2
EndIf
EndIf
EndIf
Until Event = #PB_Event_CloseWindow ; End of the event loop
bbEndBlitz3D ()
End
;
Procedure blitzroutine()
; Rotate all cubes...
For dupe = 1 To #NUM_CUBES
bbTurnEntity (cubes (dupe), 0.1, 0.2, 0.3)
Next
; Camera control...
; Turn left/right...
If bbKeyDown (#KEY_LEFT)
bbTurnEntity (cam, 0, 1, 0)
Else
If bbKeyDown (#KEY_RIGHT)
bbTurnEntity (cam, 0, -1, 0)
EndIf
EndIf
; Tilt up/down...
If bbKeyDown (#KEY_UP)
bbTurnEntity (cam, 1, 0, 0, 0) ; The last parameter here makes sure we rotate
Else ; on the 3D world's y-axis. Change to 1 to see
If bbKeyDown (#KEY_DOWN) ; the undesired effect of rotating on the entity's
bbTurnEntity (cam, -1, 0, 0, 0) ; own y-axis (at least in this case)...
EndIf
EndIf
; Forwards/backwards...
If bbKeyDown (#KEY_A)
bbMoveEntity (cam, 0, 0, 0.25)
Else
If bbKeyDown (#KEY_Z)
bbMoveEntity (cam, 0, 0, -0.25)
EndIf
EndIf
; Render 3D world to back buffer...
bbRenderWorld ()
; Show the rendered buffer (flips back buffer to front buffer)...
bbFlip ()
EndProcedure
