Seite 1 von 1

Framerate / 2 x Start3D()

Verfasst: 06.12.2016 23:59
von True29
hallo,
vor mir ist nun folgende situation und mir ist es nicht ganz klar wie sich das auf meine framerate auswirkt bzw auf die geschwindigkeit des bildaufbaus.
Die frage nun wirkt sich das 2* START3D() auf die FPS aus oder auf die leistung wenn wieviel % oder anteilig zum vergleich wenn ich nur ein start3d habe.
Das ganze habe ich getrennt da ich dazwischen etwas mit drawbewfehl zeichne.
danke für eure hilfe.

meine hauptschleife

Code: Alles auswählen

  
 Repeat   
    ClearScreen(GameBackgroundColor)  
              
       Start3D()
          DISPLAY_Background()
          DISPLAY_MAP()                             
       Stop3D()
          
       Draw_Units() > StartDrawing(ScreenOutput())
       
       Start3D()
         Display_ShadowMap()      
         Display_EffectsAndText()                     
         DisplayControls()  
       Stop3D()
         
     FlipBuffers() 
     
     Control()  
     Gamelogic()              
     events()           
  Until
__________________________________________________
Code-Tags vervollständigt
06.12.2016
RSBasic

Re: Framerate / 2 x Start3D()

Verfasst: 07.12.2016 21:46
von DarkSoul
Start3D() und Stop3D() gibt es doch gar nicht?! /:->

Hast du die als Procedures selber geschrieben? Wie sieht der Code aus?

Wenn das wirklich auf die Performance haut:
Darf StartDrawing() nicht zwischen Start3D() und Stop3D() aufgerufen werden?

1. Vor dem Gameloop ein Sprite in Bildschirmgröße erstellen
2. Statt ScreenOutput() mittels SpriteOutput() darauf rendern - Aber immer nur dann, wenn dort auch was verändert werden muss. (vor Start3D())
3. Die beiden 3D-Blöcke zusammenfügen und an die entsprechende Stelle das vorgerenderte Sprite zeigen.

Die FPS werden meines Wissens durch FlipBuffers() gesteuert und nicht vom Code, der die Grafik rendert. Solange du FlipBuffers() nur einmal pro Durchlauf aufrufst, dürfte alles gut sein.

Ansonsten zeige doch einen Screenshot von einer Spielszene. Dann wird evtl. sichtbar, ob man das nicht ohnehin anders lösen kann. StartDrawing() ist auch nicht gerade das schnellste...

Re: Framerate / 2 x Start3D()

Verfasst: 07.12.2016 21:53
von True29
bei pb v5.11 anscheinend schon ;)
https://www.purebasic.com/documentation ... art3d.html
"Start the 3D engine and setup it to display the 3D Sprites."
"Inside a Start3D() : Stop3D() block there should be no functions of the standard Sprite library (e.g. like DisplaySprite()), "

erst ab ca v5.20 glaub wurde das geändert.

"Die FPS werden meines Wissens durch FlipBuffers() gesteuert und nicht vom Code, der die Grafik rendert. Solange du FlipBuffers() nur einmal pro Durchlauf aufrufst, dürfte alles gut sein."
wenn das so wäre , wäre ich ja beruhigt ;) und wäre nun etwas schlauer

Re: Framerate / 2 x Start3D()

Verfasst: 07.12.2016 21:57
von DarkSoul
Habe ich nicht gewusst.

Gute Gelegenheit, das PB mal zu aktualisieren. Dann ist das hinfällig.

Wenn du es wirklich wissen willst:
Baue doch eine Routine ein, die die FPS erfasst und teste es dann aus.

Re: Framerate / 2 x Start3D()

Verfasst: 07.12.2016 22:07
von True29
hehe hab auch die aktuelle ;) arbeite irgndwie lieber mit 5.11.
ja werde ich wohl tun müssen.

dank dir.