jedes Frame rendern?

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Puccini

Betreff: jedes Frame rendern?

BeitragDi, Apr 08, 2008 20:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ich hab mir grad mal so gedacht, muss ich jedes frame Rendern??

ich hab mal versucht:

Code: [AUSKLAPPEN]

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

BeitragDi, Apr 08, 2008 21:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du nciht renderst, brauchst du überhaupt nix machen Smile

Wie wäre es, das Spiel überhaupt auf 60FPS abzuriegeln? WaitTimer lässt grüßen.

mfG, Christoph.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Apr 08, 2008 21:07
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Apr 08, 2008 21:16
Antworten mit Zitat
Benutzer-Profile anzeigen
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

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Apr 08, 2008 21:19
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Apr 09, 2008 7:58
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Wink

naja, waittimer und flip 0 hab ich auch drin, dankenochmals für die tollen und schnellen antworten Very Happy

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

aMul

Sieger des Minimalist Compo 01/13

BeitragMi, Apr 09, 2008 13:44
Antworten mit Zitat
Benutzer-Profile anzeigen
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: [AUSKLAPPEN]
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 Wink).
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 Razz)
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

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Apr 09, 2008 17:03
Antworten mit Zitat
Benutzer-Profile anzeigen
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. Twisted Evil

Gleichberechtigter VergleichsCode: [AUSKLAPPEN]
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

aMul

Sieger des Minimalist Compo 01/13

BeitragMi, Apr 09, 2008 17:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst das Flip und das Cls schon zwischen meine beiden Zeilen packen, nicht dahinter.
Ist doch logisch, dass es so nicht funktionieren kann Rolling Eyes
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

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Apr 09, 2008 20:31
Antworten mit Zitat
Benutzer-Profile anzeigen
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. Wink
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Puccini

BeitragMi, Apr 16, 2008 16:03
Antworten mit Zitat
Benutzer-Profile anzeigen
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: [AUSKLAPPEN]

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

BeitragMi, Apr 16, 2008 16:54
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Apr 16, 2008 17:04
Antworten mit Zitat
Benutzer-Profile anzeigen
wohl er geteilt durch 0.5 bzw mal 2 Smile
Signatur? Noch nie Gehört...

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Apr 16, 2008 17:08
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Apr 16, 2008 17:10
Antworten mit Zitat
Benutzer-Profile anzeigen
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

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Apr 16, 2008 17:12
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Apr 16, 2008 17:35
Antworten mit Zitat
Benutzer-Profile anzeigen
also:

updatetpEngine bewegt die bäume, lässt blätter rieseln und so ne spässe!
treeparty is ja schon auf lowpoly optimiert Very Happy Wink jeder baum hat in vollster pracht ca 500 polys laut blitz, dann gibts noch billboards von jedem baum aber ner gewissen distance.
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 Very Happy)

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

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

BeitragMi, Apr 16, 2008 17:39
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 Embarassed

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Apr 16, 2008 21:44
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Apr 16, 2008 22:22
Antworten mit Zitat
Benutzer-Profile anzeigen
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

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group