jedes Frame rendern?
Übersicht

![]() |
PucciniBetreff: jedes Frame rendern? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
ich hab mir grad mal so gedacht, muss ich jedes frame Rendern?? ich hab mal versucht: Code: if index=2 renderworld flip index=0 end if kann ich das so machen? und kann ich vielleicht auch update und andere sachen dort nch reinpackne?? zB alle meine grafikausgaben wären doch sinnlose rechenverschwendung wenn ich eh nur jedes 3. bild anzeige oder?? wieviele renderschritte kann ich auslassen? momentan hab ich 140 fps und rendere nur jedes 3. bild und es ist absolut flüssig. theoretisch kann ja der tft eh nur 60 darstellen, also müsste ich ja 140/60=zu rendernder frameindex oder?ß XD |
||
-=Achtung=-
Suche Hobby-Modelliere der hin und wieder bock hat ein kleines Objekt zu erstellen. Bei Interesse PM www.ragesoft.de Passwortmanager: http://ragesoft.de/index.php?o...;Itemid=39 |
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn du nciht renderst, brauchst du überhaupt nix machen ![]() Wie wäre es, das Spiel überhaupt auf 60FPS abzuriegeln? WaitTimer lässt grüßen. mfG, Christoph. |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du stellst einmal ql:CreateTimer auf 60 mit ''Flip 0'', und die Sache ist gegessen. Um noch langsamere Rechner aubzufangen kann man das ganze auch Frameunabhängig programmieren. Mehrere Rechenloops werden nur für bestimmte Zwecke benötigt, z.B. für Physikengines etc... Doch das wird dann eh anders geregelt. | ||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Puccini |
![]() Antworten mit Zitat ![]() |
---|---|---|
sonst raten doch immer alle von waittimer ab weils der "rechenintensivste befehl unter blitzbasic" ist XD
is schon frameunabhängig, also ratet ihr auch zu waittimer. hab ich mir auch shcon gedacht. weil 60fps is doch mehr als genug. danke für die antworten |
||
-=Achtung=-
Suche Hobby-Modelliere der hin und wieder bock hat ein kleines Objekt zu erstellen. Bei Interesse PM www.ragesoft.de Passwortmanager: http://ragesoft.de/index.php?o...;Itemid=39 |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wer hat gesagt das WaitTimer rechenintensiv sei? Du musst natürlich Flip 0 machen, denn Flip (Standardwert = 1) verschlingt - aus mir unverständlichem Grund - die gesamte CPU-Leistung. Also WaitTimer und Flip 0 machen und gut ist. Frameunabhängig ist noch ein Zusatz, falls selbst nach der Bremse ein langsamer Rechner es nicht mehr ausreichend schafen sollte. | ||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Puccini |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: aMul
BeitragDo Sep 21, 2006 1:58 pm Antworten mit Zitat Benutzer-Profile anzeigen TheMatrix hat Folgendes geschrieben: Wieso benutzt du nicht CreatTimer(fps) plus WaitTimer(fps)? Is kürzer und verwirrt nicht so Wink WaitTimer ist der Rechenaufwendigste Befehl zum Warten(neben Flip 1). Delay ist meilenweit besser! https://www.blitzforum.de/foru...hlight=fps ![]() naja, waittimer und flip 0 hab ich auch drin, dankenochmals für die tollen und schnellen antworten ![]() MfG Puccini |
||
-=Achtung=-
Suche Hobby-Modelliere der hin und wieder bock hat ein kleines Objekt zu erstellen. Bei Interesse PM www.ragesoft.de Passwortmanager: http://ragesoft.de/index.php?o...;Itemid=39 |
![]() |
aMulSieger des Minimalist Compo 01/13 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich sagte nur, es wäre der langsamste Befehl, wenn man einfach nur "warten" möchte.
Ich regel das in Meinen Programmen immer wie folgt. Code: Repeat
Ms = MilliSecs() ;HAX Flip 0 Delay (1000 / 60) - MilliSecs() + Ms Until KeyHit(1) Das ist nämlich zu 100% schneller als Waittimer (allerdings mit Sicherheit nicht 100% schneller ![]() Im Endeffekt muss jeder selber wissen, wie er es macht. Da ich in meinen Programmen allerdings oft die aktuelle Zeit brauche, kommt es mir bei meiner Lösung noch zu gute, dass ich MilliSecs() bereits aufrufe und in einer Variable speichere. Ihr glaubt nicht, was für einen Unterschied es macht, ob man ein paar tausend Mal Millisecs() aufruft oder eine Variable benutzt. (Jaha, wer hätte gedacht, dass ich mitkriege zitiert zu werden ![]() |
||
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans! Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, ich habe nochmal deine Methode ausprobiert, und muß wieder sagen, dass ich davon nichts halte. Deine FPS sinken bis auf 57 FPS, sobald man nur die Maus bewegt. Lässt man die Maus stehen, bleiben auch die 60 FPS bestehen. Bei WaitTimer konnte ich keinen Einbruch der FPS feststellen. Einzig und allein, dass WaitTimer bei einer Angabe von 60 tatsächlich 62 FPS macht. Scheint ein Rundungsfehler zu sein. Auch hat WaitTimer den Nachteil, dass dieser nicht auf mehr als 200 gesetzt werden kann, was aber eh Quatsch wäre.
Der einzige Grund die Sache mit Delay zu machen wie ich sehe ist, dass die Variable MS bereits besteht und diese eben nicht noch zusätzlich auslesen braucht. Aber wie auch beim letzten mal, beharrt jeder bei seiner Meinung. Also ist gut. ![]() Gleichberechtigter VergleichsCode: Graphics 800,600,0,2
SetBuffer BackBuffer() Const MODUS=2 ; MODUS = 1 = Delay ; MODUS = 2 = WaitTimer Local MS If MODUS=2 Then Local TM=CreateTimer(60) While Not KeyHit(1) If MODUS=1 Then MS = MilliSecs() If MODUS=2 Then Sinnlos=Rand(0,10) Text 20,20,fps:msc=MilliSecs() If msc>mts Then mts=msc+1001:fps=frm:frm=0 Else frm=frm+1 If MODUS=1 Then Delay (1000 / 60) - MilliSecs() + MS If MODUS=2 Then WaitTimer(TM) Flip 0 Cls Wend |
||
![]() |
aMulSieger des Minimalist Compo 01/13 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du musst das Flip und das Cls schon zwischen meine beiden Zeilen packen, nicht dahinter.
Ist doch logisch, dass es so nicht funktionieren kann ![]() |
||
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans! Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Naja, logisch oder nicht. Bei WaitTimer ist es egal wo man es einfügt. Allerdings bricht es immernoch um ein FPS ein, wenn man die Maus bewegt, wärend mit WaitTimer es immer stabil bleibt. Prozessorauslastung ist bei beiden gleich.
Aber wie gesagt, hier trennen sich unsere Meinungen. ![]() |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Puccini |
![]() Antworten mit Zitat ![]() |
---|---|---|
das rendern dauert ja seine weile ( ich weis sind nur millisecs), aber ich hab jetzt mal treeparty bei mir iengebunden und schwups sinkt die fps von 63 (mit waittimer) auf 30, das bei nur 10 bäumen :<
könnte ich es also so machen das ich in einem schleifendurchlauf treeparty berechne und im nächsten updateworld+rendere? so immer im wechsel? genauso die devil particleengien. das ich halt sage: Code: index=(index+1) mod 2 if index= 1 updateparticles updatetpEngine else updateworld renderworld flip end if wäre das sinvoll? das ich halt bei index 1 alles reinhauhe was rechenintensiv ist und bei 0 wird alles geupdatet+gerendert? oder is das wieder nur mist? ich will doch nur das es etwas flüssiger läuft! (jaja, code optimieren XD, wolle aber mal wissen ob das auch so noch geht, quasi zusätzlich) |
||
-=Achtung=-
Suche Hobby-Modelliere der hin und wieder bock hat ein kleines Objekt zu erstellen. Bei Interesse PM www.ragesoft.de Passwortmanager: http://ragesoft.de/index.php?o...;Itemid=39 |
![]() |
Moep |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn du nur jeden 2ten Frame rendern würdest, würde es genau so wirken als wenn du die FPS halbierst.
Das alte Bild bleibt ja dann stehen bis das neue gerendert wurde. mfg |
||
Hardstyle Schleichwerbung:
http://www.youtube.com/user/Hackepeter42 Achtung: Suchtgefahr! moep123.ohost.de |
![]() |
F |
![]() Antworten mit Zitat ![]() |
---|---|---|
wohl er geteilt durch 0.5 bzw mal 2 ![]() |
||
Signatur? Noch nie Gehört... |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Puccini hat Folgendes geschrieben: das rendern dauert ja seine weile ( ich weis sind nur millisecs), aber ich hab jetzt mal treeparty bei mir iengebunden und schwups sinkt die fps von 63 (mit waittimer) auf 30, das bei nur 10 bäumen :<
Bei nur 10 Bäumen gleich auf ~30 FPS? Man sollte für Spiele ja auch keine 1000 Polygone pro Baum nutzen, sondern eben Lowpoly. Bei Bäumen hieße es etwa 20 Polygone pro Baum. Und diese sehen immer noch gut aus, wenn man Ahnung davon hat. Aber was macht denn UpdateTPEngine überhaupt? Bewegt es die Baumkronen und Blätter, oder was? Und was für Partikel rufst du denn über UpdateParticles auf? Im übrigen wird dein Beispiel da in der Form nichts bringen, da du dann eben nur jedes zweite Frame erst ein Bild gerendert bekommst. Der Effekt ist der, wie Moep es schon beschrieben hat. Oder anders ausgedrückt. Der Mainloop würde biszu maximal doppelt so schnell ablaufen, aber der User würde davon rein garnichts zu sehen bekommen, da ja eben wieder nur halb so viel Änderung angezeigt wird. In erster Line würde ich also prüfen, welche Funktion so sehr an den Recourcen frisst und ggf. diese optimieren. z.B. weniger Partikel, Partikel ohne Kollisionsabfrage zur Umwelt etc... Erst wenn das geschehen, dann könnte man Sachen die man nicht direkt sieht oder nicht jedes Frame neu berechnet werden müssen in seiner Ausführung eingrenzen. So z.B. die Baumkronen dem Wind nach bewegen... |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Moep |
![]() Antworten mit Zitat ![]() |
---|---|---|
Angenommen du hast 60 FPS und siehst nur jeden zweiten, was ja die von ihm beschriebene Methode als Folge hätte. Dann siehst du nur noch 30 Bilder pro Sekunde da alle 2 Sekunde 60 gerendert werden.
30FPS=60FPS durch 2 = 60FPS mal 0.5 Oder seh ich das jetzt falsch? |
||
Hardstyle Schleichwerbung:
http://www.youtube.com/user/Hackepeter42 Achtung: Suchtgefahr! moep123.ohost.de |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn durch WaitTimer auf 60 FPS abgebremst wird, stimmt die Aussage. Aber wenn zuvor 60 FPS das Systemmaximum war, so werden mit dieser Mod -Methode auch weiterhin ~60 FPS sichtbar ablaufen (intern dann ~120 FPS). | ||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Puccini |
![]() Antworten mit Zitat ![]() |
---|---|---|
also:
updatetpEngine bewegt die bäume, lässt blätter rieseln und so ne spässe! treeparty is ja schon auf lowpoly optimiert ![]() ![]() updateparticle beweget halt alle partikle die gerade exisitieren, sind nur ca 200-400 da ich 2 feuer am laufen hab. ich hab das jetzt mal so ausprobiert wie ich das oben hingeschrieben hab und hab wieder fast konstant 60fps und merk bei der bewegung der kamera nix von 30 bilder XD die partikel haben keine collisin, zumindest hab ich das nich eingestellt (hoffe das es standardmässig so is ![]() auch mein SkyUpdate lasse ich nur jedes 3. frame laufen, da dort nur die aktuelle zeit, das licht und der sonnenstand berechnet wird, also muss das ja net jedes frame passieren ![]() ich werd aber mal weiterhin testen was noch so rauszuholen ist aus meinem code! achja, ich hab noch ca 10 nicht optimierte (ca >4000polygone) meshs im level, wie sehr ziehen die an der performance=?? die sind nicht animiert, stehen nur rum. |
||
-=Achtung=-
Suche Hobby-Modelliere der hin und wieder bock hat ein kleines Objekt zu erstellen. Bei Interesse PM www.ragesoft.de Passwortmanager: http://ragesoft.de/index.php?o...;Itemid=39 |
Gast |
![]() Antworten mit Zitat |
|
---|---|---|
OffTopic: Bei AMul Brechen die FPS ein, wenn ich
• Das Fenster verschiebe • Die Maus bewege • Oder etwas anderes mit dem Fenster mache OnTopic: Dazu kann ich nichts sagen ![]() |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Puccini, messe doch mal die Zeit aller Sachen einzelnd. Also vor jedem relevanten Befehl einmal in eine separate Variable den aktuellen MilliSecs -Wert zwischen speichern. Am Ende dann alle Werte ausgeben lassen. Dann hast du in etwa schonmal einen Überblick über dein Programm. | ||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Puccini |
![]() Antworten mit Zitat ![]() |
---|---|---|
gabs da nich mal nen Prog was das gemacht hat?
wo jeder befehl ausgemessen wurde? |
||
-=Achtung=-
Suche Hobby-Modelliere der hin und wieder bock hat ein kleines Objekt zu erstellen. Bei Interesse PM www.ragesoft.de Passwortmanager: http://ragesoft.de/index.php?o...;Itemid=39 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group