SetFrameRate(120) - Framerate läuft amok

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

SetFrameRate(120) - Framerate läuft amok

Beitrag von GPI »

SetFrameRate(120) scheint zumindest den Wert 120 überhaupt nicht zu mögen, anstatt einer Begrenzung auf eine 120Hz werden soviele Bilder berechnet, wie die Maschine hergibt.
119 und 200 werden ohne Probleme richtig umgesetzt (hab es mit Fraps überprüft)

Der Fehler tritt nur auf, wenn die Bildschirmwiederholrate auf 120 Hz steht (geht mit meinen 3D-Monitor ohne Probleme). Wenn ich den auf 100Hz stelle, dann tritt der Fehler bei setframerate(100) auf.

60Hz hab ich leider nicht zur Verfügung - das verweigert meine NVDI-Karte zum einstellen. Möglich das der Fehler auch auf 60 hz funktioniert.

Grobe Vermutung: Ich hab den Screen mit #PB_Screen_NoSynchronization geöffnet. SetFrameRate scheint wohl zu kontrollieren gewählte Hz=BildschirmHz -> kein Eingriff nötig und übersieht das #PB_Screen_NoSynchronization zumindest beim Windowed Screen.

Hier ein Beispielcode zum experimentieren

Code: Alles auswählen

Dim x.f(10)
Dim y.f(10)
Dim dx.f(10)
Dim dy.f(10)

For i=0 To 10
  x(i)=Random(640)
  y(i)=Random(640)
  dx(i)=2-Random(4)
  dy(i)=2-Random(4)
Next
If OpenWindow(0,0,0,640,400,"test", #PB_Window_ScreenCentered|#PB_Window_SystemMenu)
  InitSprite()
  If OpenWindowedScreen(WindowID(0),0,0,640,400,#False,0,0,#PB_Screen_NoSynchronization)
    SetFrameRate(120);119 geht, 120 nicht, 200 geht.
    Repeat
      ClearScreen(0)
      StartDrawing(ScreenOutput())
      For i=0 To 10
        ox=x(i):oy=y(i)
        If x(i)+dx(i)<0 Or x(i)+dx(i)>640
          dx(i)=-dx(i)
        EndIf
        If y(i)+dy(i)<0 Or y(i)+dy(i)>400
          dy(i)=-dy(i)
        EndIf
        x(i)+dx(i)
        y(i)+dy(i)
        LineXY(ox,oy,x(i),y(i))
      Next
      StopDrawing()
      FlipBuffers()
    
    Until WindowEvent()=#PB_Event_CloseWindow
  EndIf
EndIf
Edit: Purebasic 4.51
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Re: SetFrameRate(120) - Framerate läuft amok

Beitrag von Mok »

Hier läuft's ohne Probleme mit 60, 120 und 200...

Edit: Bei 59 tritt derselbe Effekt auf :shock:, mal schnell in der Systemsteuerung nachgeschaut... da stehen tatsächlich 59 Hertz! Zwar stehen auch 60 Hz zur Auswahl, allerdings springt die Auswahl nach einem klick auf "OK" auf 59 Hertz zurück :?:
Zuletzt geändert von Mok am 27.06.2011 19:27, insgesamt 1-mal geändert.
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: SetFrameRate(120) - Framerate läuft amok

Beitrag von GPI »

Welch Hz-Zahl hat dein Monitor? Wenn der 60Hz hat, stell mal setframerate( 60) ein.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Re: SetFrameRate(120) - Framerate läuft amok

Beitrag von cxAlex »

Kann ich hier bestätigen.

Am 60 Herz Monitor dreht der Code durch und berechnet einfach ohne Begrenzung wenn ich die Framerate auf 60 stelle. 59 ist ok, 61 auch, 120 auch, ... . Nur 60 NICHT.

Gruß, Alex
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Benutzeravatar
FosJonas
Beiträge: 121
Registriert: 12.11.2008 19:31

Re: SetFrameRate(120) - Framerate läuft amok

Beitrag von FosJonas »

Bei meinem 60 Herz Monitor(unter Ubuntu) funktioniert es wunderbar, getestet habe ich frames von 30-121 und dabei ist der Code nie durchgedreht.
Purebasic 5.10 | Kubuntu 12.04 (64 bit) | Opera 12.01 | Nvidia GT 9800
Xubuntu 12.04 (64 bit) | Intel HD Graphis (Onboard)
Andreas21
Beiträge: 390
Registriert: 30.08.2004 09:05
Computerausstattung: Desktop
Windows 10 Pro x64
CPU: AMD Ryzen 5 2600 3.40 GHz
Ram: 16GB RAM
Grafik: NVIDA Geforce 1060
PB: 5.72 X86/X64
Wohnort: Heidelberg

Re: SetFrameRate(120) - Framerate läuft amok

Beitrag von Andreas21 »

59, 120 und 200 ok. Bei 60 leuft er doppelt bis drei mal so schnell.

Win 7 x86
Windows 10 x64 Pro - PB 5.61 X64 / x32 - PB 4.6 x32
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Re: SetFrameRate(120) - Framerate läuft amok

Beitrag von PureLust »

Bei mir das Gleiche - wenn die eingestellte FrameRate der Bildwiederholfrequenz des Monitors entspricht (bei mir 60Hz) scheint SetFrameRate() nicht zu funktionieren.

Testet on: Win7-64Bit, PB4.51

Greetz, PL.
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Antworten