Hi,
ich habe mich jetzt mal an Blitz3D herangewagt und habe mir einfach mal eins der Tutorials genommen und es ein wenig umgeschrieben. Jetzt will ich die FPS anzeigen lassen, weiß aber nicht, wie. Könnt ihr mir da helfen? Hier der Code:
ich habe mich jetzt mal an Blitz3D herangewagt und habe mir einfach mal eins der Tutorials genommen und es ein wenig umgeschrieben. Jetzt will ich die FPS anzeigen lassen, weiß aber nicht, wie. Könnt ihr mir da helfen? Hier der Code:
Graphics3D 800,600
SetBuffer BackBuffer()
fps_max = 50
fps_timer = CreateTimer(fps_max)
camera=CreateCamera()
CameraViewport camera,0,-100,800,600
light=CreateLight()
man=LoadMD2( "car.md2" )
PositionEntity man,0,-30,600
RotateEntity man,0,180,0
AnimateMD2 man,1,.1,32,46
While Not KeyHit(1)
WaitTimer(fps_timer)
If dist<500 MoveEntity man,0,0,.5
If dist=500 AnimateMD2 man,1,.05,0,31
dist=dist+1
UpdateWorld
RenderWorld
Color 255,0,0
Text 10,10,"fps_max : " + fps_max
Text 10,20,"distance: " + dist
Flip
Wend
End
ok .... da ist der fehler schon im syntax (d.H. es die befehle an der falschen stelle)
also das was du machst wartet immer bis ein timer (der aller 50 [millisekunden denk ich mir hier mal] zuschlägt)
also wenns was zeichnet sollte es mit maximal 20 fps laufen (es kann sein das dein projekt mal graphiken beinhaltet wo B3D etwas mehr als 50 ms zum rendern braucht wodurch der ein takt aus gelassen wird.
aber egal es sieht in vb n bissel anders aus deshalb mal heute als PAP:
so nu kommt das wichtigste
diese variente zeigt nach jedem timer event wieviele frames pro sekunde erzeugt wurden also fps geht erst später runder...
zweite möglich keit :
diese variente ist einfacher und nimmt die zeit für ein frame und rechnet da raus die fps
also das was du machst wartet immer bis ein timer (der aller 50 [millisekunden denk ich mir hier mal] zuschlägt)
also wenns was zeichnet sollte es mit maximal 20 fps laufen (es kann sein das dein projekt mal graphiken beinhaltet wo B3D etwas mehr als 50 ms zum rendern braucht wodurch der ein takt aus gelassen wird.
aber egal es sieht in vb n bissel anders aus deshalb mal heute als PAP:
Variablen initzalisieren
Objekte erstellen und initzalisieren
(hier muss der timer gestartet werden und auf eine gewisse zahl eingestelt werden)
mainloop:
temp = temp + 1 (!!!!!!!!!!!!!)
ändere position von 3d-pbjekten ....
zeichne 3D-scene
2D-text x,y,"fps" + fps
und aufm bildschirm ausgeben
und weiter bei mainloop
so nu kommt das wichtigste
Event_Timer (heist bei B3D anders)
fps = temp * faktor (faktor ist zb 20 wenn der timmer aller 20 ms zuschlägt)
temp = 0
ende der funktion
diese variente zeigt nach jedem timer event wieviele frames pro sekunde erzeugt wurden also fps geht erst später runder...
zweite möglich keit :
Variablen initzalisieren
Objekte erstellen und initzalisieren
Stopuhr erstellen.... (kA ob es sowas gibt)
mainloop:
Stopuhrstart()
ändere position von 3d-pbjekten ....
zeichne 3D-scene
Stopuhrstop()
fps = 1000 / stopuhr.milliseconds
2D-text x,y,"fps" + fps
und aufm bildschirm ausgeben
und weiter bei mainloop
diese variente ist einfacher und nimmt die zeit für ein frame und rechnet da raus die fps
Logge dich ein um einen Beitrag zu schreiben.