Performance --> nur noch 30 FPS [Neues(altes) Problem]

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

Der Eisvogel

Betreff: Performance --> nur noch 30 FPS [Neues(altes) Problem]

BeitragSa, Feb 21, 2009 14:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo
Ich progge im Moment ein Spiel und hab e nicht auf meine FPS aufgepasst.
Mir ist nur langsam aufgefallen, dass das Spiel nicht mehr so schnell läuft wie am Anfang.

Ich habe jetzt mal enige Sachen auskommentiert und es blieb gleich. Jetzt habe ich eine Funktion mehr auskommentiert und das Spiel schafft 70 FPS ohne Timer wohlgemerkt.

Hier die Funktion:
Code: [AUSKLAPPEN]
Function F_NotePad(x:Int,y:Int,width:Int,height:Int)
   i_notepad_scroll_y:+MouseZSpeed()*15
   If i_notepad_scroll_y+100+i_game_size*20<height Then i_notepad_scroll_y=height-100-i_game_size*20
   If i_notepad_scroll_y>0 Then i_notepad_scroll_y=0
   
   SetDrawDefaults()
   SetViewport x,y,width,height
   SetOrigin x+i_notepad_scroll_x,y+i_notepad_scroll_y
   
   SetColor 0,0,0 ; DrawRect 0,0,500,100+i_game_size*20
   SetColor 255,255,255 ; DrawRect 2,2,496,96+i_game_size*20
   
   For Local x:Int=0 To 2
      For Local y:Int=0 To i_game_size-1
         Local i_points:Int=F_AnalyseGame(y,x)
         If MouseOver(200+x*50,50+y*20,50,20) Then
            
            SetColor 255,0,0
            DrawRect 200+x*50,50+y*20,50,20
            
            If i_points<>0 And ai_player[x,y]=0 And i_dice_end=False Then
               MouseTip(Left(i_points,Len(String(i_points))*(i_points>=0))+Left("---",Len("---")*(i_points=-1)),500)
               
               If mh Then
                  ai_player[x,y]=i_points
               EndIf
            EndIf
         EndIf
         
         SetColor 0,0,0
         If ai_player[x,y]>0 Then DrawTextEx ai_player[x,y],225+x*50,60+y*20,1,1
         If ai_player[x,y]<0 Then DrawTextEx "---",225+x*50,60+y*20,1,1
      Next
   Next
   
   SetColor 0,0,0
   For Local i:Int=0 To 3
      DrawLine 200+i*50,50,200+i*50,50+i_game_size*20
   Next
   For Local i:Int=0 To i_game_size-1
      If Int(as_game[i,2]) & 1 Then DrawLine 50,70+i*20,450,70+i*20
      If Int(as_game[i,2]) & 2 Then DrawLine 50,51+i*20,450,51+i*20
      If Int(as_game[i,2]) & 4 Then DrawLine 50,71+i*20,450,71+i*20
      DrawText as_game[i,0],55,54+i*20
   Next
   
   DrawText "i_game_size",200,100+i_game_size*20
   SetOrigin 0,0
   SetViewport 0,0,GW,GH
End Function


Auch hier habe ich auskommentiert. Aber bei dieser Funktion hatte sich auch nur etwas veränderrt, wenn ich alles aus kommentiert hatte. Alle Funktionen, die ich in dieser Verwende wurden von mit auch schon unter die Lupe genommen und sie hatten alle nix zu sagen, dass heißt wohl oder übel, dass mein Übertäter in dieser Funktion stecken muss oder? Ich finde ihn aber nicht.
Das eizige, was aber nur 10 FPS ausmacht sind diese 2 Zeilen:
Code: [AUSKLAPPEN]
   SetColor 0,0,0 ; DrawRect 0,0,500,100+i_game_size*20
   SetColor 255,255,255 ; DrawRect 2,2,496,96+i_game_size*20

Aber wie soll ich diese ersetzten, und selbst wenn ich sie ersetzten würde mt etwas schellerem, dann hätte ich immeroch nur 40 FPS. Ich bin echt voll deprimiert. Ich habe echt keine Ahnung mehr, was ich machen soll.
Wäre nett, wenn ihr mit helfen würdet.

PS: Diese paar Zeilen sind mir auch noch aufgefallen, aber die machen auch nur 5 FPS aus. Crying or Very sad
Code: [AUSKLAPPEN]
   For Local i:Int=0 To i_game_size-1
      If Int(as_game[i,2]) & 1 Then DrawLine 50,70+i*20,450,70+i*20
      If Int(as_game[i,2]) & 2 Then DrawLine 50,51+i*20,450,51+i*20
      If Int(as_game[i,2]) & 4 Then DrawLine 50,71+i*20,450,71+i*20
      DrawText as_game[i,0],55,54+i*20
   Next


EDIT: So ich hab jetzt mal beide Code-Stücke gleichzeitig auskommentiert, und jetzt hab ich plötzlich 120 FPS. Ich hätte schon früher beide zusammen auskommentieren sollen. Aber was soll ich jetzt machen um die 2 erwähnten Code-Stücke zu ersetzten?

MfG
Der Eisvogel
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

ChaosCoder

BeitragSa, Feb 21, 2009 15:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
   For Local i:Int=0 To i_game_size-1
      If Int(as_game[i,2]) & 1 Then DrawRect 50,70+i*20,400,1
      If Int(as_game[i,2]) & 2 Then DrawRect 50,51+i*20,400,1
      If Int(as_game[i,2]) & 4 Then DrawRect 50,71+i*20,400,1
      DrawText as_game[i,0],55,54+i*20
   Next
Für horizontale/vertikale Linien immer DrawRect benutzen. DrawLine ist da viel zu langsam!
Projekte: Geolaria | aNemy
Webseite: chaosspace.de

BladeRunner

Moderator

BeitragSa, Feb 21, 2009 15:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Guck mal bei den Modulen nach drawrectfast von mir. Kann sein dass deine Graka bei rect stark bremst.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Der Eisvogel

BeitragSa, Feb 21, 2009 17:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit dem Modul gehts leider noch langsamer.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

ChaosCoder

BeitragSa, Feb 21, 2009 17:37
Antworten mit Zitat
Benutzer-Profile anzeigen
und wie siehts mit dem codeschnipsel von mir aus? schneller? langsamer? fps?
Projekte: Geolaria | aNemy
Webseite: chaosspace.de

Der Eisvogel

BeitragSa, Feb 21, 2009 17:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Also im groß und ganze sehe ich keinen Unterschied, wenn ich es aber brutal ins Detail nehme so 2 FPS.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group