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
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