Seite 1 von 1

Wie funktioniert OpenWindow3D()?!?

Verfasst: 21.12.2008 23:07
von Regenduft
Hi Leutz,

Ich stehe mal wieder total auf'm Schlauch!
Warum kann ich mit folgendem Quellcode kein 3D-Fentser öffnen???

Code: Alles auswählen

Debug InitEngine3D()
Debug InitSprite()
Debug OpenScreen(1024, 768, 32, "Test-Screen")

If OpenWindow3D(0, 10, 10, 100, 100, "Test-Win3D") = 0
  CloseScreen()
  MessageRequester("FEHLER!", "3D-Fenster nicht geöffnet!")
  End
EndIf

Repeat
  ShowGUI(128, 1)
  Delay(10)
  FlipBuffers()
Until GetAsyncKeyState_(#VK_ESCAPE)

End
Edit: Wenn der Quellcode bei euch läuft und nur bei mir nicht, wäre ich für die Info auch dankbar...

Verfasst: 21.12.2008 23:43
von Fluid Byte
Ich glaub die Einbindung von CEGUI ist noch nicht ganz sauber.
Mit folgendem Code gibts 'nen feinen Runtime-Error:

Code: Alles auswählen

InitEngine3D()
InitSprite()
InitKeyboard()

OpenWindow(0,0,0,640,480,"void",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0),0,0,640,480,0,0,0)

OpenWindow3D(0,10,10,100,100,"Test-Win3D")

ShowGUI(128,1) 

Repeat
	WindowEvent()

	ClearScreen(0)
	ExamineKeyboard()

	FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
Bild

Verfasst: 21.12.2008 23:52
von cxAlex
Krieg genau den selben Fehler. Ist warscheinlich ein Bug in der Window3D lib.

Verfasst: 22.12.2008 00:27
von Regenduft
Danke für die Antworten,

In Bezug auf den Code von Fluid Byte: Setzt man ein Debug vor's OpenWindow3D erhält man eine Null. (daher evtl. der Runtime-Fehler?)

Der GUI-Democode aus dem Ogre1.6-Demo läuft bei mir aber einwandfrei. Da werden aber auch Schemes u.ä. für die GUI vorher eingebunden. Geht der Code-Fehler vielleicht in die Richtung?

Verfasst: 22.12.2008 00:58
von PMV
Die CEGUI setzt einen Skin vorraus, der automatisch geladen wird ... ist
kein Pfad auf einen entsprechenden Skin gesetzt, schmiert die EXE
einfach ab ohne Kommentar. Ziemlich blöd gelöst, da ich mich aber nicht
mit CEGUI beschäftigen möchte kann ich dir nichts näheres sagen. Eine
lauffähige CEGUI-Nutzung gibs im französischen Forum ... leider hab ich
hier nicht alle meine Daten, weshalb ich ... naja ich such mal kurz ... und
auf anhieb gefunden:

http://www.purebasic.fr/french/viewtopic.php?t=8714

Entweder du studierst die CEGUI-HP ... oder/ und die Ressorce dieses
Beispiels. :D ... mehr hab ich darüber zumindest noch nicht gefunden,
allerdings sagt mir CEGUI auch noch nicht zu ... . Fals du kein
Französisch kannst nutze z.B. Google als Übersetzer :wink:
-> Ergebnis <-

MFG PMV

Verfasst: 23.12.2008 03:45
von Regenduft
Ui, da war einer fleißig am Recherchieren! Danke! Uff die Gelbfießler un dä Schwowäsäggele is halt Verlass. :wink:

Verfasst: 23.12.2008 17:57
von PMV
Das ist nur mein Wohnort :wink:
Obwohl böse Zungen ja behauten, ich würde dort nicht auffallen :lol:

Aber ich hatte mich ein paar Monate vorher schon mal mit CEGUI in der
Theorie beschäftigt ... weil ich ein ähnliches Konzept entwickeln wollte ...
aber nach dem ich definitiv keine Zeit für so ein Projekt hab und dann
CEGUI gefunden hatte ... hab ichs auch direkt wieder auf Eis gelegt, ma
schauen wie sich CEGUI entwickelt, existiert ja auch noch nicht so lang
das Projekt.

MFG PMV

Verfasst: 25.12.2008 01:31
von Andreas21
Mit Ogre1.6-Demo leuft auch der Code hier:

Code: Alles auswählen

#PB_Window3D_Invisible =  1 << 0
#PB_Window3D_SizeGadget = 1 << 1
#PB_Window3D_Borderless = 1 << 2
#PB_Event3D_Gadget = 1
#PB_Event3D_CloseWindow = 2
#PB_Event3D_SizeWindow = 3
#PB_Event3D_MoveWindow = 4
#PB_Event3D_ActivateWindow = 5
#PB_ListView3D_Multiselect = 1
#PB_ScrollArea3D_InnerWidth  =1
#PB_ScrollArea3D_InnerHeight =2
#PB_ScrollArea3D_X =3
#PB_ScrollArea3D_Y =4
#CameraSpeed = 10

IncludeFile "Screen3DRequester.pb"

If InitEngine3D()
  Add3DArchive("Data\", #PB_3DArchive_FileSystem)
  Add3DArchive("GUI\schemes", #PB_3DArchive_FileSystem)
  Add3DArchive("GUI\imagesets", #PB_3DArchive_FileSystem)
  Add3DArchive("GUI\fonts", #PB_3DArchive_FileSystem)
  Add3DArchive("GUI\looknfeel", #PB_3DArchive_FileSystem)
  InitSprite()
  InitKeyboard()
  InitMouse()
  If Screen3DRequester()
    CreateMaterial(0, LoadTexture(0, "r2skin.jpg"))
    CreateCamera(0, 0, 0, 100, 100)  ; Front camera
    CameraLocate(0,0,100,100)
    a = OpenWindow3D(3, 100, 100, 200, 300, "Hello CEGUI :)")
      ResizeWindow3D(3, #PB_Ignore, #PB_Ignore, 400, #PB_Ignore)
      SetWindowTitle3D(3, "CHnaged")
      HideWindow3D(3, #False) 		
      PanelGadget3D(0, 10, 50, 300, 200)
      AddGadgetItem3D(0, -1, "Tab 1")
        ButtonGadget3D(#PB_Any, 10, 10, 120, 25, "Push me 1")
        ScrollBarGadget3D(10, 10, 40, 200, 15, 0, 100, 20)				
		    ListViewGadget3D(11, 10, 70, 100, 90)
		      AddGadgetItem3D(11, -1, "item 1")
		      AddGadgetItem3D(11, -1, "item 2")
		      AddGadgetItem3D(11, -1, "item 3")
		      AddGadgetItem3D(11, -1, "item 4")
		      AddGadgetItem3D(11, -1, "item 5")
		      AddGadgetItem3D(11, -1, "item 6")
		    TreeGadget3D(12, 110, 70, 100, 90)
		      AddGadgetItem3D(12, -1, "item 1")
  		    AddGadgetItem3D(12, -1, "item 2")
	  	    AddGadgetItem3D(12, -1, "item 3")
		      AddGadgetItem3D(12, -1, "item 4")
		      AddGadgetItem3D(12, -1, "item 5")
		      AddGadgetItem3D(12, -1, "item 6")		
    		  AddGadgetItem3D(0, -1, "Tab 2")
        OptionGadget3D(20, 10, 30, 100, 25, "1")
        OptionGadget3D(21, 10, 60, 100, 25, "2")
    	  OptionGadget3D(22, 10, 90, 100, 25, "3")
    	  ButtonGadget3D(#PB_Any, 10, 10, 120, 25, "Push me 2")
    	  OptionGadget3D(23, 110, 30, 100, 25, "1")
    	  OptionGadget3D(24, 110, 60, 100, 25, "2")
    	  OptionGadget3D(25, 110, 90, 100, 25, "3")
    	AddGadgetItem3D(0, -1, "Tab 3")
    	  ButtonGadget3D  (#PB_Any, 10, 10, 120, 25, "Push me")
		    TextGadget3D    (#PB_Any, 10, 40, 120, 25, "Push me")
		    CheckBoxGadget3D(#PB_Any, 10, 70, 120, 25, "Push me")
		    ComboBoxGadget3D(#PB_Any, 10, 100, 120, 30)
		    SpinGadget3D    (#PB_Any, 10, 135, 120, 25, 0, 100)
    	AddGadgetItem3D(0, -1, "Tab 4")
    	  ScrollArea = ScrollAreaGadget3D(#PB_Any, 10, 10, 100, 100, 400, 400, 10)
    		  ButtonGadget3D  (#PB_Any, 10, 10, 120, 25, "Push me")
		    	TextGadget3D    (#PB_Any, 10, 40, 120, 25, "Push me")
		    	TextGadget3D    (#PB_Any, 10, 90, 120, 25, "Push me")
		  CloseGadgetList3D()
		  SetGadgetAttribute3D(ScrollArea, #PB_ScrollArea3D_InnerWidth, 200)
    	Container = ContainerGadget3D(#PB_Any, 130, 10, 100, 100)
    	  ButtonGadget3D  (#PB_Any, 10, 10, 120, 25, "Push me")
		    TextGadget3D    (#PB_Any, 10, 40, 120, 25, "Push me")
		    TextGadget3D    (#PB_Any, 10, 90, 120, 25, "Push me")
	    CloseGadgetList3D() 		
		  Progress = ProgressBarGadget3D(#PB_Any, 10, 120, 200, 25, 50, 100)
		  SetGadgetState3D(Progress, 75)
      AddGadgetItem3D(0, -1, "Tab 5")
        image = ImageGadget3D(#PB_Any, 10, 10, 100, 100, TextureID(0))
		  CloseGadgetList3D()	
 		  ButtonGadget3D(#PB_Any, 10, 260, 120, 25, "Push me")	
 		  SetGadgetState3D(0, 4)	
 		  ShowGUI(128, 1)		
    Window2 = OpenWindow3D(#PB_Any, 500, 400, 200, 100, "2nd window", #PB_Window3D_Borderless)
    SetWindowTitle3D(Window2, "Test 2") 	  
    
    Repeat
      Screen3DEvents()
      If ExamineKeyboard()
        If KeyboardPushed(#PB_Key_Left)
          KeyX = -#CameraSpeed 
        ElseIf KeyboardPushed(#PB_Key_Right)
          KeyX = #CameraSpeed 
        Else
          KeyX = 0
        EndIf    
        If KeyboardPushed(#PB_Key_Up)
          KeyY = -#CameraSpeed 
        ElseIf KeyboardPushed(#PB_Key_Down)
          KeyY = #CameraSpeed 
        Else
          KeyY = 0
        EndIf
      EndIf
      If ExamineMouse()
        MouseX = -(MouseDeltaX()/10)*#CameraSpeed/2
        MouseY = -(MouseDeltaY()/10)*#CameraSpeed/2
        If MouseButton(#PB_MouseButton_Left)
        	Debug MousePick(0, MouseX(), MouseY())
        EndIf
        InputEvent3D(MouseX(), MouseY(), MouseButton(#PB_MouseButton_Left), "F")
      EndIf
      
      Repeat 
      	Event = WindowEvent3D()
      	Select Event 
      		Case #PB_Event3D_Gadget
      			Debug "Gadget = "+Str(EventGadget3D())+" - Window = "+Str(EventWindow3D())
      			Debug "Pane = "+Str(GetGadgetAttribute3D(scrollarea, #PB_ScrollArea3D_X))     			
      		Case #PB_Event3D_CloseWindow
      			Debug "CloseWindow: "+Str(EventWindow3D())
      		Case #PB_Event3D_MoveWindow
      			Debug "MoveWindow: "+Str(EventWindow3D())
      		Case #PB_Event3D_SizeWindow
      			Debug "SizeWindow: "+Str(EventWindow3D())
      		Case #PB_Event3D_ActivateWindow
      			Debug "ActivateWindow: "+Str(EventWindow3D())     			
      	EndSelect
     	Until Event = 0
     	
      RenderWorld()
      FlipBuffers()
      
    Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
  EndIf
    
Else
  MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf
End
Zeigt nur das 3D Fenster an.

Verfasst: 30.12.2008 18:09
von PMV
Ach ja ... das franzöische Beispiel verwendet auch die Ressorcen
aus dieser OGRE-Demo vom PB-Team. Am besten also das von
Andreas21 verlinkte Packet downloaden und mit rumspielen. :D

MFG PMV