ResizeWindow3D bricht ab
Verfasst: 11.09.2013 09:12
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.
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