Seite 1 von 1

Resize für OpenWindowScreen - Gibts das überhaupt?

Verfasst: 06.05.2014 16:38
von cdx
Hi,

benutze die interne PB 3D engine und möchte meine Grafikausgabe in z.B. einen ContainerGadget vollführen. Dieses Gadget möchte ich dann entsprechend mit ResizeGadget skalieren können und die 3D Ausgabe muss sich entsprechend von der Größe her anpassen!

Habe nichts dazu gefunden bzgl. dem resize der Grafikausgabe ... geht das mit der PB 3D engine überhaupt?

Danke und Grüße,
cdx

Re: Resize für OpenWindowScreen - Gibts das überhaupt?

Verfasst: 06.05.2014 16:48
von bobobo
Autostretch kaputt? Das ist eine Option im OpenWindowedscreen

Re: Resize für OpenWindowScreen - Gibts das überhaupt?

Verfasst: 06.05.2014 17:05
von cdx
I know about that but it just does not work :cry: ... try this and you will see what I mean (black square is the 3D engine output - pink one is the backcolor of the container gadget).

Paste that code, run it and resize the window!

Code: Alles auswählen

If(InitEngine3D())
  
  InitSprite()
  
  MainWindow = OpenWindow(#PB_Any, 0, 0, 400, 400, "Test", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
  Container = ContainerGadget(#PB_Any, 10, 10, 100, 100)
  SetGadgetColor(Container, #PB_Gadget_BackColor, RGB(255,0,128))
  CloseGadgetList()
  
  OpenWindowedScreen(WindowID(Container), 0, 0, WindowWidth(Container), WindowHeight(Container), 1, 0, 0)
    
  Repeat
      
    Event = WindowEvent()
        
    Select Event       
        
      Case #PB_Event_CloseWindow
        End 
        
      Case #PB_Event_SizeWindow 
        ResizeGadget(Container, 10, 10, WindowWidth(MainWindow, #PB_Window_InnerCoordinate) - 20, WindowHeight(MainWindow, #PB_Window_InnerCoordinate) - 20)  
        
    EndSelect        

    RenderWorld()    
    FlipBuffers() 
  
  ForEver
    
EndIf

Re: Resize für OpenWindowScreen - Gibts das überhaupt?

Verfasst: 06.05.2014 18:07
von bobobo
Läuft gar nicht in 5.22

WindowId(contain..) mag dort nicht.

hier ein etwas getuntes Demo aus der PB Hilfe

Code: Alles auswählen

If InitSprite() = 0
    MessageRequester("Error", "Can't open screen & sprite environment!", 0)
    End
  EndIf
  
  If OpenWindow(0, 0, 0, 320, 200, "A screen in a window...", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
    CreateStatusBar(0, WindowID(0))
      AddStatusBarField(320)
      
    StatusBarText(0, 0, "Automatically zoomed screen area when changing window size...")
    
    If OpenWindowedScreen(WindowID(0), 10, 10, 320, 200, #True, 20, 30)
  
      CreateSprite(0, 50, 50) ; Create an empty sprite, will be whole black
        
      Repeat
        ; It's very important to process all the events remaining in the queue at each frame
        ;
        Repeat
          Event = WaitWindowEvent(10)
          
          If Event = #PB_Event_CloseWindow
            End
          EndIf
        Until Event = 0
        
        FlipBuffers()
        ClearScreen(RGB(0, 0, 200)) ; A blue background
        
        DisplaySprite(0, 10, 10)  ; Display our black box at the left-top corner
        DisplaySprite(0, 260, 10) ; Display our black box at the right-top corner
      ForEver
      
    Else
      MessageRequester("Error", "Can't open windowed screen!", 0)
    EndIf
  EndIf
wenn es platte Grafik sein soll dann tut es doch auch ein Canvasgadget, das lässt sich dann leichter resizen per resizegadget(..)

Re: Resize für OpenWindowScreen - Gibts das überhaupt?

Verfasst: 06.05.2014 19:10
von cdx
Dabke für die Antwort ... hab ich mir schon fast gedacht nachdem ich alles durchforstet habe. Brauche es für ein Tool wo ich etwas 3D mache, ist also von nöten.

Danke und Grüße,
cdx

Re: Resize für OpenWindowScreen - Gibts das überhaupt?

Verfasst: 07.05.2014 09:04
von Chimorin
Die Autostretchfunktion geht in Verbindung mit der OGRE-Engine nicht.