ResizeWindow3D bricht ab

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
wpshadow
Beiträge: 22
Registriert: 21.11.2010 21:56
Computerausstattung: i7 3770, 8gb RAM, Samsung 840 PRO SSD
Pure Basic 5.60

ResizeWindow3D bricht ab

Beitrag von wpshadow »

Guten Morgen,

ich experimentiere gerade mit einem 3D - Fenster in einem OpenWindowedScreen herum.

Dabei versuche ich das Fenster an die aktuelle Desktop - Auflösung anzupassen (d.h. in meinem Fall 1900x1200), d.h. zu maximieren.

Grundlegend fangen wir das Event #PB_Event_MaximizeWindow ab und versuchen das 3D Fenster zu verändern. Dabei haben wir schon mehrere Versionen versucht, jedoch bekamen wir immer wieder die Fehlermeldung:

Das angegebene #Window3D wurde nicht initialisiert.

Leider sind wir uns beide nicht sicher, was genau damit gemeint ist, da die 3D Darstellung selbst ja erfolgt und erst abbricht, wenn wir

win3D = GetActiveWindow3D()
ResizeWindow3D(win3D, 0, 0, 1024, 768)


aufrufen. win3D ist inzwischen der letzte Versuch eine ganzen Reihe von Tests, die leider alle nicht funktioniert haben. Wir haben an dieser Stelle versucht die Auflösung einfach mal fix zu setzen, um zu sehen, ob sich evtl. was ändert, jedoch kam es niemals soweit. Auf das Event reagiert der Code jedoch richtig: mit einem END wird das Ganze sauber beendet.

Ich habe Unten den Code dran gehängt.

Hat irgendjemand eine Idee, was genau der Fehler sein könnte bzw. was wir falsch machen?

lg

W.


Code: Alles auswählen

#Window = 1
#MainWindow = 0

Declare UpdateEvents()
Declare Create3DStuff()
Declare InitEngineParts()


InitEngineParts()


If OpenWindow(#MainWindow, 0, 0, 800, 600, "Testefenster", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MaximizeGadget)
  
  OpenWindowedScreen(WindowID(#MainWindow), 0, 0,800, 600, 0, 0, 0) 
  OpenWindow3D(#Window, 100, 100, 300, 100, "")
  
  
  Create3DStuff()
  
  
  Repeat ;Hauptschleife
    

    UpdateEvents()    
      
    ExamineKeyboard()  
    RenderWorld() 
    FlipBuffers()
    
  Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
  
  
  
  
EndIf






;---------------Funktionen!---------------------------------------------------

Procedure InitEngineParts()
  
  InitEngine3D()   
  InitSprite()
  InitKeyboard()
  InitMouse()
  
EndProcedure


Procedure Create3DStuff()
  
  CreateCamera(0, 0, 0, 100, 100)  ; Front camera
  MoveCamera(0,0,100,100, #PB_Absolute)   
  CameraLookAt(0,0,0,0)
  
  
  CreateCylinder(1,20,30) 
  CreateEntity(0, MeshID(1), #PB_Material_None) 
  MoveEntity(0,0,0,0)
  
  EntityRenderMode(0, #PB_Entity_DisplaySkeleton)
  CreateLight(0,RGB(0,255,0),0,100,0)
  
EndProcedure


Procedure UpdateEvents()
  
    Repeat ;Eventschleife

        Event = WindowEvent()
        win3D = GetActiveWindow3D()
        
        Select Event
          
          Case #PB_Event_CloseWindow
            Quit = 1
           
          Case #PB_Event_MaximizeWindow
            
            ResizeWindow3D(win3D, 0,  0,  1024, 768)
        EndSelect
        
        If Quit = 1 : End : EndIf  ; Quit the app immediately
      Until Event = 0 ;Ende Eventschleife 
      
EndProcedure
;-)
Pure Basic 5.60
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Re: ResizeWindow3D bricht ab

Beitrag von bobobo »

Da fehlt was entscheidendes.
Das Resizewindow scheitert weil es gar kein 3dWindow gibt.

Das 3DWindow braucht außer Größenangaben noch Hinweise, wie es was darzustellen hat.
Dazu solltet Ihr das 3dArchiv Data\GUI einbinden

Erweitert mal Euren Code um

Add3DArchive("Data/GUI", #PB_3DArchive_FileSystem)

hinter InitEngineParts()

dann speichert Ihr den Code in Verzeichnis
Euer Purebasicordner \examples\3d\mein3dtest.pb
und lasst ihn von dort laufen.


Ob ein Resizen des HauptFensters überhaupt Sinn macht sei mal dahingestellt...
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Schranz0r
Beiträge: 22
Registriert: 11.09.2013 19:09

Re: ResizeWindow3D bricht ab

Beitrag von Schranz0r »

Hi,

ich bin der zweite im Bunde. :D
Verstehe nicht was Add3DArchive("Data/GUI", #PB_3DArchive_FileSystem) bringen soll.
Der Fehler mit dem #Window3D ist zwar weg und es schmiert nicht mehr ab, dennoch versteh ich den Hintergrund dafür nicht.
Bin ich gezwungen die Gui zu benutzen?
Kann man das nicht auch ohne diese 3D-GUI lösen?

Danke für deine Hilfe. :praise:
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

Re: ResizeWindow3D bricht ab

Beitrag von Chimorin »

Das, was ihr da eingebunden habt, ist die 3D-GUI, genannt CEGUI. Läuft ungefähr genauso wie mit der Engine3D.dll, wenn du die nicht hast, weiß dein Programm nicht, was es machen soll, bzw. wie eure Fenster auszusehen haben (Schrift, Design der Fenster).
Je nachdem, wo euer GUI-Zeug gespeichert ist, müsst ihr den Pfad eben anpassen (Der Ordner muss auch nicht GUI heißen, wenn ihr in so nicht haben wollt).
Bild

- formerly known as Bananenfreak -
Benutzeravatar
wpshadow
Beiträge: 22
Registriert: 21.11.2010 21:56
Computerausstattung: i7 3770, 8gb RAM, Samsung 840 PRO SSD
Pure Basic 5.60

Re: ResizeWindow3D bricht ab

Beitrag von wpshadow »

Hi,
danke für die schnellen Antworten.

Wenn wir jetzt nur eine reine 3D - Darstellung machen wollen, jedoch ohne die 3D - Gui, wie genau wäre dann das richtige Vorgehen? Ich vermute, dass wir uns in dem Fall dann vollkommen verrannt haben, oder?

lg

W.
;-)
Pure Basic 5.60
Benutzeravatar
N_Gnom
Beiträge: 149
Registriert: 11.09.2013 19:52

Re: ResizeWindow3D bricht ab

Beitrag von N_Gnom »

OpenWindow
Open(Windowed)Screen

ach und InitEngine3D nich vergessen...das jetzt nur für das Fenster und um die interne Engine3D zu initialisieren.
Ansonsten ist die Hilfe in PB auf jeden Fall zu empfehlen....
Laptop: Win10@64bit - i3 2x2Ghz - 8GB Ram - 1TB HDD
Desktop: Win10@64bit - AMD Ryzen 5 2400G - MSI B450 Tomahawk - 8GB Ram - 240GB SSD
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Re: ResizeWindow3D bricht ab

Beitrag von bobobo »

und die mitgelieferten Demos

(und natürlich das Forum (auch das englishe) :) )

Verrannt hat sich niemand.
Abfragen für ein Programm im WindowedScreen kann man z.B. über ein normales Fenster erledigen.
Erst im Fullscreen kann man auch an ein 3dD-Gui denken, falls einem gar nichts anderes dazu einfällt.
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
wpshadow
Beiträge: 22
Registriert: 21.11.2010 21:56
Computerausstattung: i7 3770, 8gb RAM, Samsung 840 PRO SSD
Pure Basic 5.60

Re: ResizeWindow3D bricht ab

Beitrag von wpshadow »

Klasse, das geht dann doch einfacher als gedacht.

Dann machen wir uns heute mal sofort dran und korrigieren, was das Zeug hält. :mrgreen:

Von der 3D-Gui werden wir uns wohl vorerst mal fern halten und uns erst einmal allgemein einarbeiten!

Danke euch! :allright:
;-)
Pure Basic 5.60
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

Re: ResizeWindow3D bricht ab

Beitrag von Chimorin »

Die CEGUI ist auf den ersten Blick auch toll, dennoch fehlen einige Sachen (Ganz zu schweigen von einem Messagerequester, den man selber basteln muss :shock: ).
Bild

- formerly known as Bananenfreak -
Benutzeravatar
wpshadow
Beiträge: 22
Registriert: 21.11.2010 21:56
Computerausstattung: i7 3770, 8gb RAM, Samsung 840 PRO SSD
Pure Basic 5.60

Re: ResizeWindow3D bricht ab

Beitrag von wpshadow »

Ok, der Tip ist auch gut! Zum Thema GUI werden wir uns sowieso noch was überlegen müssen... :?

Wobei wir davon momentan noch weit weg sind *lol*
;-)
Pure Basic 5.60
Antworten