Darstellungsfehler bei BMP's ?

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag von Danilo »

Kaeru Gaman hat geschrieben:...btw ich seh grad, du hast da ein Delay(10) in der Schleife.. wieso denn das ?
Das Delay() ist auskommentiert.
Kaeru Gaman hat geschrieben:FlipBuffers synct doch mit der framerate, die ich vorher setzen kann... jedenfalls bei 3.30...
FlipBuffers lief dann aber auch immer auf Volllast.

In einem Spiel braucht man kein Delay, schliesslich soll das
Ding mit voll Power laufen können. Die CPU ist ja schliesslich
zum arbeiten da, nicht zum idlen. ;)
Bei so kleinen Tests kann man aber ruhig mal ein Delay
reinmachen, wenn eh fast keine Power gebraucht wird -
zum Beispiel um mal schnell 5 Sprites über'n Screen zu
schmeißen.

Bei mir laufen die Prozessoren (2) im Leerlauf mit ~35°C - 37°C,
und die Prozessorlüfter sind mit SpeedFan runtergeregelt auf 70%.
Wenn die Prozessoren auf Last laufen und sich dann auf 45°C
erwärmt haben, regeln die Lüfter wieder hoch - und das vermeide
ich mit dem Delay, wo nicht volle Power nötig ist. :)
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

>FlipBuffers lief dann aber auch immer auf Volllast.

...äähh, bitte ??? :shock:

wie muss ich das denn jetzt verstehen ?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag von Danilo »

Kaeru Gaman hat geschrieben:>FlipBuffers lief dann aber auch immer auf Volllast.

...äähh, bitte ??? :shock:

wie muss ich das denn jetzt verstehen ?
FlipBuffers() zog 100% CPU-Time während es nur gewartet
hat bis es switchen soll (auf die Begrenzung von SetFrameRate).

Hast Du keinen CPU-Monitor installiert, den Du immer im
Blickfeld hast? Sowas ist als Entwickler Pflicht.

Kannst ja mal ausprobieren mit SetFrameRate + FlipBuffers auf PB 3.30.
Hat sich aber vor kurzem geändert, ist also in der aktuellen
Version OK.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

...ok ic... (nein, den moni hab ich nich an... thnx for the tip)

...das 'setframerate' ist in 3.30 die einzige syncronisationsmöglichkeit...

...in der neuen version zieht es keine 100% mehr ? wär ja gut...

...wenn ich die neue version erstmal habe, werde ich vielleicht auch eher mit 'elapsedtime' arbeiten...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag von Danilo »

Kaeru Gaman hat geschrieben:...wenn ich die neue version erstmal habe, werde ich vielleicht auch eher mit 'elapsedtime' arbeiten...
Das alte FlipBuffers() war auch immer an die Monitor-Refresh-Rate
gebunden, wenn man kein SetFrameRate nutzte.
Jetzt ist es optional möglich nicht auf den Retrace zu warten,
wodurch Du auch mal schnell ein paar hundert FPS bekommen
kannst.
Ist eh eine bessere Idee unbegrenzt laufen zu lassen und alles
per Faktor "Zeit" zu steuern.

Naja, wirst dann schon sehen mit der neuen Version... ;)
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

*zustimmung*

ich denke auch, die komfortabelste lösung wäre:

Code: Alles auswählen

#Duration = desired_milliseconds_per_turn

Repeat

    time = ElapsedTime()

    ... Hauptschleifeninhalt ...

    Repeat : Until ElapsedTime() > time + #Duration

Until Exit_Main_Loop_Condition
...einwände oder anregungen ? :D
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1765
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag von Andre »

Kaeru Gaman hat geschrieben: ...einwände oder anregungen ? :D
Es gibt schon Code-Beispiele für zeitgesteuerte Game-Loops, sollten sowohl im CodeArchiv als auch hier im Forum (ggf. im Archiv) zu finden sein. U.a. auch von Danilo.... :wink:
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

@André

mercí !

...hier ist sooooo viel information vorhanden, dass ich garnich weiss, wo ich anfangen soll... :shock:

...könnte nen vollen monat damit verbringen, alles aufzuarbeiten was hier geposted wurde und rauszuziehen, was ich gebrauchen kann... :wink:
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Lars
Beiträge: 347
Registriert: 31.08.2004 23:53
Wohnort: Shanghai
Kontaktdaten:

Beitrag von Lars »

Kaeru Gaman hat geschrieben:[c]Repeat : Until ElapsedTime() > time + #Duration[/c]
Das ist ja gar fürchterlich <)

Diese Schleife verbraucht 100% CPU, dann kannst du sie dir auch
schenken. Da muss noch ein [c]Delay(1)[/c] oder auch [c]Delay(5)[/c] rein.

Zum Thema zeitgestäuerter Ablauf solltest du mal in die FAQ gucken :wink:
Lars
The only problem with troubleshooting is, that sometimes the trouble shoots back.
P4 2,6Ghz, 512MB RAM, GeForce 6200, WinXP Pro SP2, PB V3.94
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

@Lars

...mit Delay(1) bin ich einverstanden....

aber mal im ernst: mir is das doch banane, wenn mein game 100% CPU zieht... zeig mir das game, bei dem du nebenbei noch x andere aufgaben fahren kannst... mir gehts hier um ein game, nich um ne application...

...wenns richtig brennt, bleibt sowieso keine CPU zeit für anderen schmonz übrig,
ohne das es anfängt zu ruckeln ! (<- bewusst geplenkt)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten