Framerate / 2 x Start3D()

Für allgemeine Fragen zur Programmierung mit PureBasic.
True29
Beiträge: 283
Registriert: 18.08.2012 19:18
Computerausstattung: Windows 8 64bit .Profan x2,Purebasic 5.5
Wohnort: Worms
Kontaktdaten:

Framerate / 2 x Start3D()

Beitrag 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
i7,12gb ram , Windows 10 ,Purebasic 5.50
Benutzeravatar
DarkSoul
Beiträge: 689
Registriert: 19.10.2006 12:51

Re: Framerate / 2 x Start3D()

Beitrag 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...
Zuletzt geändert von DarkSoul am 07.12.2016 21:56, insgesamt 1-mal geändert.
Bild
True29
Beiträge: 283
Registriert: 18.08.2012 19:18
Computerausstattung: Windows 8 64bit .Profan x2,Purebasic 5.5
Wohnort: Worms
Kontaktdaten:

Re: Framerate / 2 x Start3D()

Beitrag 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
i7,12gb ram , Windows 10 ,Purebasic 5.50
Benutzeravatar
DarkSoul
Beiträge: 689
Registriert: 19.10.2006 12:51

Re: Framerate / 2 x Start3D()

Beitrag 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.
Bild
True29
Beiträge: 283
Registriert: 18.08.2012 19:18
Computerausstattung: Windows 8 64bit .Profan x2,Purebasic 5.5
Wohnort: Worms
Kontaktdaten:

Re: Framerate / 2 x Start3D()

Beitrag von True29 »

hehe hab auch die aktuelle ;) arbeite irgndwie lieber mit 5.11.
ja werde ich wohl tun müssen.

dank dir.
i7,12gb ram , Windows 10 ,Purebasic 5.50
Antworten