
- Wie kann man die Render-Funktion timen (FPS & Deltatime) ?
- Wie kann der Prozessor entlastet werden (Delay) ?
2DRSBasic hat geschrieben:2D oder 3D?
Mijikai hat geschrieben:Hat jemand ein Beispiel für einen GameLoop ohne V-Sync/Framelimit ?![]()
Code: Alles auswählen
EnableExplicit
InitSprite()
InitMouse()
InitKeyboard()
InitSound()
If OpenScreen(1920, 1080, 32, "Screen")
;SetFrameRate(60)
Repeat
FlipBuffers()
ClearScreen(RGB(0, 0, 0))
ExamineKeyboard()
ExamineMouse()
If KeyboardReleased(#PB_Key_Escape)
End
EndIf
ForEver
EndIf
Ich glaube, es gab mal ein Beispielcode von STARGÅTE, um ohne SetFrameRate das Timing für die Animation und Spielwiedergabe zu steuern.Mijikai hat geschrieben:- Wie kann man die Render-Funktion timen (FPS & Deltatime) ?
Das brauchst du garnicht machen. Bei meinem Beispielcode gibt es 0 %-Prozessorauslastung.Mijikai hat geschrieben:- Wie kann der Prozessor entlastet werden (Delay) ?
Hab ich gelesenRSBasic hat geschrieben:Deshalb schrieb ich, es gibt einen Beispielcode von STARGÅTE. Such mal im Forum.
Ich kann später auch mal suchen.
Genaumk-soft hat geschrieben:Also 2D ohne Screen !?
Muss mal suchen
Code: Alles auswählen
;-
Enumeration windows
#Main
EndEnumeration
Enumeration gadgets
#Canvas
EndEnumeration
Procedure MyDraw()
Static r = 10, add = 10
Protected dx = GadgetWidth(#Canvas)
Protected dy = GadgetHeight(#Canvas)
Protected x = dx >> 1
Protected y = dy >> 1
If StartDrawing(CanvasOutput(#Canvas))
Box(0, 0, dx, dy, $FFFF00)
r + add
If r >= 200
add = -10
ElseIf r <= 10
add = 10
EndIf
Circle(x, y, r, $0000FF)
StopDrawing()
EndIf
EndProcedure
Procedure Main()
Protected event
Protected frames, time, timer
If OpenWindow(#Main, #PB_Ignore, #PB_Ignore, 800, 600, "MyDraw", #PB_Window_SystemMenu)
CanvasGadget(#Canvas, 0, 0, WindowWidth(#Main), WindowHeight(#Main))
Else
End -1
EndIf
frames = 30
time = 1000 / frames
timer = 1
AddWindowTimer(#Main, timer, time)
BindEvent(#PB_Event_Timer, @MyDraw(), #Main, timer)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
EndProcedure : Main()