escapeGUI - läuft zu langsam... (zu viel CPU-Auslastung)

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

N0X

Betreff: escapeGUI - läuft zu langsam... (zu viel CPU-Auslastung)

BeitragSa, Aug 28, 2010 16:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey!
Ich arbeite mit dem escapeGUI in der 3D Version.
Mein Programm zieht aber 50% CPU Leistung bei einem DualCore. (AMD Athlon64 X2 6000+)
Was volle 100% bei einem Kern machen würde.
In meinem Programm habe ich einen Timer auf 60, ich benutze Double-Buffering mit Flip 0 und habe keine unnötigen Verschwendungen der Leistung im Mainloop. (oder sonstwo..)
Ich habe zwar viele Fenster und Menüeiträge, aber daran kann es doch nicht liegen oder?
Ich erstelle am Anfang des Programms schon ALLE Fenster (sind 8) die ich dann mit WindowHide verstecke, und wenn sie benötigt werden mit WindowActive aktiviere. Liegt das daran?

Warum habe ich trotzdem soviel Auslastung?
Ist das bei dem GUI normal?

Mfg,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Xaymar

ehemals "Cgamer"

BeitragSa, Aug 28, 2010 17:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Ohne Code kann ich nicht viel sagen, allerdings sind diese "50%" nicht normal.
Warbseite

N0X

BeitragSa, Aug 28, 2010 18:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm, ok.

Hier der Haupt-Code:
*EDIT*

Mfg,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%
  • Zuletzt bearbeitet von N0X am Sa, Aug 28, 2010 19:12, insgesamt einmal bearbeitet

Xaymar

ehemals "Cgamer"

BeitragSa, Aug 28, 2010 18:15
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
For o.TObject = Each TObject
If o\picked<>0 Then
EntityFX o\mesh,51

PositionEntity bAr,o\pos_x#,o\pos_y#+(MeshHeight(o\mesh)/2),o\pos_z#
PositionEntity gAr,o\pos_x#,o\pos_y#+(MeshHeight(o\mesh)/2),o\pos_z#
PositionEntity rAr,o\pos_x#,o\pos_y#+(MeshHeight(o\mesh)/2),o\pos_z#
RotateEntity rAr,0,0,-90
RotateEntity bAr,90,0,0
ShowEntity bAr
ShowEntity gAr
ShowEntity rAr

Select Handle(eg_event_input)
Case Handle(meshDetailPosX_Inp)
o\pos_x# = meshDetailPosX_Inp\caption$
Case Handle(meshDetailPosY_Inp)
o\pos_y# = meshDetailPosY_Inp\caption$
Case Handle(meshDetailPosZ_Inp)
o\pos_z# = meshDetailPosZ_Inp\caption$
Default
If KeyHit(211) Then
HideEntity bAr
HideEntity gAr
HideEntity rAr
FreeEntity o\mesh
Delete o
EndIf
End Select

If modelChange=1 Then
If KeyDown(200) Then
o\pos_z# = o\pos_z#+0.7
EndIf

If KeyDown(208) Then
o\pos_z# = o\pos_z#-0.7
EndIf

If KeyDown(203) Then
o\pos_x# = o\pos_x#-0.7
EndIf

If KeyDown(205) Then
o\pos_x# = o\pos_x#+0.7
EndIf
ElseIf modelChange=2
If KeyDown(200) Then
o\pos_y# = o\pos_y#+0.7
EndIf

If KeyDown(208) Then
o\pos_y# = o\pos_y#-0.7
EndIf
ElseIf modelChange=3
If KeyDown(200) Then
o\turn_y# = o\turn_y#+0.7
EndIf

If KeyDown(208) Then
o\turn_y# = o\turn_y#-0.7
EndIf

If KeyDown(203) Then
o\turn_x# = o\turn_x#-0.7
EndIf

If KeyDown(205) Then
o\turn_x# = o\turn_x#+0.7
EndIf
EndIf

If KeyDown(53) Or KeyDown(74) Then
o\size_x#=o\size_x#-0.1
o\size_y#=o\size_y#-0.1
o\size_z#=o\size_z#-0.1
If o\size_x#<0.1 Then o\size_x#=0.1
If o\size_y#<0.1 Then o\size_y#=0.1
If o\size_z#<0.1 Then o\size_z#=0.1
ScaleEntity o\mesh,o\size_x#,o\size_y#,o\size_z#
EndIf

If KeyDown(27) Or KeyDown(78) Then
o\size_x#=o\size_x#+0.1
o\size_y#=o\size_y#+0.1
o\size_z#=o\size_z#+0.1
If o\size_x#>100.0 Then o\size_x#=100.0
If o\size_y#>100.0 Then o\size_y#=100.0
If o\size_z#>100.0 Then o\size_z#=100.0
ScaleEntity o\mesh,o\size_x#,o\size_y#,o\size_z#
EndIf
Else
EntityFX o\mesh,0
EndIf
Next

Ich gehe davon aus das das dafür verantwortlich ist. Wie viel Objekte hat es im Normalbetrieb?

btw mit folgenden beiden Zeilen kannst du dir in etwa raussuchen was das verursacht:
BlitzBasic: [AUSKLAPPEN]
TempMsCounter=MilliSecs()
;Den Codeteil hierzwischen
DebugLog "PARTNAME ms: "+(MilliSecs()-TempMsCounter)


Da es anscheinend keinen FPS-Counter hat, gehe ich mal davon aus das es nicht mit den gewollten FPS läuft
Warbseite

N0X

BeitragSa, Aug 28, 2010 19:12
Antworten mit Zitat
Benutzer-Profile anzeigen
So, hab mal ein bisschen auskommentiert und die bösen Zeilen gefunden!
(Es war nicht die For-Schleife.)

Es liegt an diesen Zeilen:
Code: [AUSKLAPPEN]
For eg_mnu.EG_Menu = Each EG_Menu
   If eg_mnu\id = setFog\menu Then eg_draw_menu(eg_mnu):Exit
   If eg_mnu\id = setSky\menu Then eg_draw_menu(eg_mnu):Exit
Next


Ist ja klar das das böse endet ;D
Naja, stand eben bloß an der falschen Stelle.
Problem gelöst.

Mfg,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group