[BUG] ResizeWindow() & InitEngine3D()

All bugs related to the 3D engine
User avatar
tft
User
User
Posts: 84
Joined: Mon Dec 29, 2008 9:34 am

[BUG] ResizeWindow() & InitEngine3D()

Post by tft »

I want to program my game in 800X600 and 3D. And then scale that to FullScreen with ResizeWindow(#Window, 0, 0, 1920, 1080). Unfortunately that doesn't seem to work.
Unfortunately, no decent picture can be made of it. The screen is always below right and in the rest of the screen you can see a full screen frame from the double buffer
I need this urgently. Please help me. Even if I made myself too stupid.

System Info : W10 / PB 6.00 / GTX Titan / Driver WQ 472.09 / 6 GB Video Ram / 32 GB System Ram

This part works as it should

Code: Select all

Enumeration
   #Window
EndEnumeration

InitSprite()
OpenWindow(#Window, 0, 0, 400, 300, "A screen in a window...", #PB_Window_BorderLess | #PB_Window_ScreenCentered | #PB_Window_Invisible)
OpenWindowedScreen(WindowID(#Window), 0, 0, 400, 300, 1, 0, 0)
ResizeWindow(#Window, 0, 0, 1920, 1080)
HideWindow(#Window, #False)

Repeat
  
  Repeat
    Event = WindowEvent()
    If Event
      
      If EventWindow() = #Window         
        Select Event
          Case #WM_KEYDOWN 
            Select EventwParam()
              Case #ESC                   ; Programm beenden bei drücken der ESC Taste
                Quit = 1
            EndSelect
          Case #PB_Event_CloseWindow      ; Programm beenden bei SystemCloseWindow GadGet
            Quit = 1
          Default
        EndSelect
      EndIf
    Else
      If #PB_Compiler_Version < 600       ; PureBasic 6.0 benötigt keien Delay(), Das scheint ime WindowEvent enthalten
        Delay(1)                           ; Wenn keine Events vorliegen dann dem System etwas Zeit einräumen.
      EndIf  
    EndIf
    
    If Quit <> 0 : Event = 0 : EndIf 
      
  Until Event = 0
  
   FlipBuffers()
   ClearScreen(RGB(0, 0, 0))
   If StartDrawing(ScreenOutput())
      DrawText(10, 10, "Screen Resulution 400X300 ")
      DrawText(10, 30, "Press ESC to go ")
      DrawText(10, 50, "Hallo Welt! "+Str(ElapsedMilliseconds()), $FFFFFF, $000000)
      StopDrawing()
   EndIf
    
 Until Quit = 1
 
 End
And when using 3D. Doesn't seem to work.

Code: Select all

EnableExplicit

;{ Variablen
Enumeration
   #Window
EndEnumeration

Global M_GameName.s = "ScaleTest3D"
Global Event, Quit

Global MakeLogFile    = 1
Global Console_ein    = 0
Global DebugLogMutex  = CreateMutex()
Global DebugLogPfad.s = GetCurrentDirectory()

Global M_ScreenMaxX  = 200
Global M_ScreenMaxY  = 100
Global M_ScreenX 
Global M_ScreenY 
Global M_ScreenD 
Global M_ScreenF 
Global M_ScenterX 
Global M_ScenterY 

Global M_Window_HWND
Global M_Screen_HWND

;}
;{ DebugLog

Procedure DebugLog(t.s)
  
  Shared DebugLogMutex, Console_ein, MakeLogFile
  Protected l.s = "Log.txt", fh.l,lenght.l
  Static first.b
  
  LockMutex(DebugLogMutex)
  If first=0
    
  EndIf
  
  first=1
  
  ;Debug ">"
  If #PB_Compiler_Debugger = 1
    Debug t
  EndIf  
  If Console_ein
    PrintN(t)
  EndIf
 
  If MakeLogFile = 1
    ;Debug ">"
    ;Debug ">"+DebugLogPfad+l  
    If FileSize(DebugLogPfad+l)>0
      ;Debug ">Log file exist"
      fh = OpenFile(#PB_Any,DebugLogPfad+l)
      lenght = Lof(fh) 
      FileSeek(fh,lenght)
    Else
      ;Debug ">Create log file"
      fh = CreateFile(#PB_Any,DebugLogPfad+l)
    EndIf
    Delay(1)
    If fh
      ;Debug ">Write : "+t
      WriteStringN(fh,t)
      Delay(1)
      CloseFile(fh)  
    EndIf
    ;Debug ">"
  EndIf
  UnlockMutex(DebugLogMutex)
  
EndProcedure

;}
;{ HighPerformanceTimer

#ElapsedTime_Second      = 1e0
#ElapsedTime_Millisecond = 1e3
#ElapsedTime_Microsecond = 1e6

Global _QueryPerformanceFrequency.q : QueryPerformanceFrequency_(@_QueryPerformanceFrequency)

; Returns the elapsed time between this call and the last call. 
Procedure.d ElapsedTime(Unit.d=#ElapsedTime_Second)
  
  Protected Counter.q, Time.d
  Static _QueryPerformanceCounter.q
  
  QueryPerformanceCounter_(@Counter)
  Time = Unit * (Counter-_QueryPerformanceCounter) / _QueryPerformanceFrequency
  _QueryPerformanceCounter = Counter
  
  ProcedureReturn Time
  
EndProcedure


;}
;{ Init 3D Screen
If ExamineDesktops()
  ; uns interesiert eigentlich nur der 1.
  ; Da bei W10 Monitore in einem gesamt sichtbereich verwaltet werden
  ; was es erlaubt bei Fenstern auch negative werte zu verwenden.
  ; Monitor 0 ist immer X = 0, Y = 0
  
  M_ScreenX = DesktopWidth(0)
  M_ScreenY = DesktopHeight(0)
  M_ScreenD = DesktopDepth(0)
  M_ScreenF = DesktopFrequency(0)
  M_ScenterX = M_ScreenX/2
  M_ScenterY = M_ScreenY/2
  
  ;- NEU Scale Faktor berechnen
  ;
  ; erstaml die Grösse auf die Wunschgrösse ändern
  M_ScreenX = M_ScreenMaxX
  M_ScreenY = M_ScreenMaxY
    
Else
  ; Kritischer Fehler !!!!
  DebugLog("> Cant found Display Info")
  MessageRequester("Breake "+M_GameName.s , "Cant found Display Info")
  End
EndIf  

InitEngine3D()
InitSprite()

OpenWindow(#Window, 0, 0, M_ScreenMaxX, M_ScreenMaxY, "A screen in a window...", #PB_Window_BorderLess | #PB_Window_ScreenCentered | #PB_Window_Invisible)
OpenWindowedScreen(WindowID(#Window), 0, 0, M_ScreenMaxX, M_ScreenMaxY, 1, 0, 0)
ResizeWindow(#Window, 0, 0, 1920, 1080)
HideWindow(#Window, #False)

;}
;{ Camera

Global M_Camera = CreateCamera(#PB_Any, 0, 0, 100, 100)  ; Front camera
CameraBackColor(M_Camera, RGB(0, 0, 55))
CameraFOV(M_Camera, 30)
; Aufgrund der Skaybox ist die maximal sicht weite aufetwa 9000.00 begrenst
CameraRange(M_Camera, 1, 9000)
AmbientColor(RGB(255, 255, 255))  ; Green 'HUD' like color

;}
;{ Aufhängung für die Camera Achsen anbinden

Global M_CameraAchseX  = CreateNode(#PB_Any)
Global M_CameraAchseY  = CreateNode(#PB_Any)      
;AttachEntityObject(CameraMove, "CameraMove", NodeID(CameraAchseY))
AttachNodeObject(M_CameraAchseY,  NodeID(M_CameraAchseX))
AttachNodeObject(M_CameraAchseX,  CameraID(M_Camera))            
MoveCamera(M_Camera, 0, 0, 5, #PB_Parent)
CameraRenderMode(M_Camera,#PB_Camera_Wireframe)

;}
;{ Dammy Objekt in Space

CreateMaterial(0, #Null)

Global M_MeshDammy = CreateCube(#PB_Any,1)
If Not M_MeshDammy
  ; Kritischer Fehler !!!!
  DebugLog("> Cant create M_MeshDammy")
  MessageRequester("Breake "+M_GameName.s , "Cant create M_MeshDammy")
  End
EndIf
Global M_Dammy = CreateEntity(#PB_Any, MeshID(M_MeshDammy), MaterialID(0))
If Not M_Dammy
  ; Kritischer Fehler !!!!
  DebugLog("> Cant create Entity M_Dammy")
  MessageRequester("Breake "+M_GameName.s , "Cant create Entity M_Dammy")
  End
EndIf
MoveEntity(M_Dammy,0,0,0,#PB_Absolute)  

;}
Repeat  
  ;{ Event
  Repeat
    Event = WindowEvent()
    If Event
      
      If EventWindow() = #Window         
        Select Event
          Case #WM_KEYDOWN 
            Select EventwParam()
              Case #ESC                   ; Programm beenden bei drücken der ESC Taste
                Quit = 1
            EndSelect
          Case #PB_Event_CloseWindow      ; Programm beenden bei SystemCloseWindow GadGet
            Quit = 1
          Default
        EndSelect
      EndIf
    Else
      If #PB_Compiler_Version < 600       ; PureBasic 6.0 benötigt keien Delay(), Das scheint ime WindowEvent enthalten
        Delay(1)                           ; Wenn keine Events vorliegen dann dem System etwas Zeit einräumen.
      EndIf  
    EndIf
    
    If Quit <> 0 : Event = 0 : EndIf 
      
  Until Event = 0
  ;}
  ;{ Rotate Dammy

  Global M_LoopDelta.d = ElapsedTime(#ElapsedTime_Microsecond)/1000.0
  RotateEntity(M_Dammy,0.01*M_LoopDelta.d,0.02*M_LoopDelta.d,0.03*M_LoopDelta.d,#PB_Relative)
  
  ;} 
  RenderWorld()  
  ;{ Draw Text 
  
  ;ClearScreen(RGB(0, 0, 0))
  If StartDrawing(ScreenOutput())
    DrawText(10, 10, "Screen Resulution 400X300 ")
    DrawText(10, 30, "Press ESC to go ")
    DrawText(10, 50, "Hallo Welt! "+Str(ElapsedMilliseconds()), $FFFFFF, $000000)
    StopDrawing()
  EndIf
  
  ;}
  FlipBuffers()
 
Until Quit = 1

End
TFT seid 1989
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMagic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)