Wie funktioniert OpenWindow3D()?!?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Regenduft
Beiträge: 574
Registriert: 25.03.2008 15:07
Wohnort: THE LÄÄÄND!

Wie funktioniert OpenWindow3D()?!?

Beitrag 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...
Zuletzt geändert von Regenduft am 22.12.2008 00:28, insgesamt 1-mal geändert.
PureBasic 5.73 LTE x86/x64 | Windows 7 (x64)
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag 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
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Beitrag von cxAlex »

Krieg genau den selben Fehler. Ist warscheinlich ein Bug in der Window3D lib.
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Benutzeravatar
Regenduft
Beiträge: 574
Registriert: 25.03.2008 15:07
Wohnort: THE LÄÄÄND!

Beitrag 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?
PureBasic 5.73 LTE x86/x64 | Windows 7 (x64)
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag 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
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
Regenduft
Beiträge: 574
Registriert: 25.03.2008 15:07
Wohnort: THE LÄÄÄND!

Beitrag von Regenduft »

Ui, da war einer fleißig am Recherchieren! Danke! Uff die Gelbfießler un dä Schwowäsäggele is halt Verlass. :wink:
PureBasic 5.73 LTE x86/x64 | Windows 7 (x64)
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag 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
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Andreas21
Beiträge: 390
Registriert: 30.08.2004 09:05
Computerausstattung: Desktop
Windows 10 Pro x64
CPU: AMD Ryzen 5 2600 3.40 GHz
Ram: 16GB RAM
Grafik: NVIDA Geforce 1060
PB: 5.72 X86/X64
Wohnort: Heidelberg

Beitrag 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.
Windows 10 x64 Pro - PB 5.61 X64 / x32 - PB 4.6 x32
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag 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
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Antworten