Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
DarK Super JLI'ler
Anmeldedatum: 23.07.2002 Beiträge: 452 Wohnort: NRW Medaillen: Keine
|
Verfasst am: 18.06.2003, 22:31 Titel: FPS !?!? SPIELFELD ?!?! |
|
|
jo muh,
ich hab hier ein kleines problem...
wenn ich eine for schleife mache und die ersten kästchen zeichne dann hab ich 80 FPS und ganz plötzlich schießen die fps auf 40 runter nur bei einer 2 for schleife die dann die 2 kästchen zeichnen...
hier ein codeauschnitt, beide for schleifen sind fast das selbe ...
Code: |
int SpriteX = 0;
int SpriteY = 0;
for (int y = scrollY; y < max_scrollY; y++)
{
for (int x = scrollX; x < max_scrollX; x++)
{
boden.setposition(SpriteX, SpriteY);
boden.draw();
SpriteX += 100;
}
SpriteX = 0;
SpriteY += 66;
}
|
scrollY und scrollX sind hierbei auf 11 und 10 gestellt...
folgende Bilder zeigen das problem noch genauer:
eine For schleife
zwei for schleifen
|
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 19.06.2003, 09:38 Titel: |
|
|
Das liegt seht Wahrscheinlich am V-Sync. Du verwendest für dein Spielfeld eine Monitorauflösung, die eine Wiederholfrequenz von 80 Hz hat. Wenn nun mehr gezeichnet werden soll, als in einen 1/80'stel Abschnitt passt, wird die Framerate halbiert, da der Present-Befehl auf den nächsten V-Sync wartet. _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
DarK Super JLI'ler
Anmeldedatum: 23.07.2002 Beiträge: 452 Wohnort: NRW Medaillen: Keine
|
Verfasst am: 19.06.2003, 12:48 Titel: |
|
|
und was kann ich dagegen machen ?
Auflösung ändern ?
V-Sync ändern ? (geht das überhaupt ?) |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 19.06.2003, 13:01 Titel: |
|
|
Warum sollte die Framerate halbiert werden? Er wartet doch erst vor dem Pageflipping darauf, dass der Kathodenstrahl wieder von vorne anfängt. Ich hatte mal getestet, bei wieviel Sprites die Framerate einbricht... und da hat sich auch nichts halbiert...
[Nachtrag]
Dark: Die Framerate ist doch okay bei so einer hohen Auflösung... du solltest dir Gedanken machen, wenn sie unter 30 geht... _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
DarK Super JLI'ler
Anmeldedatum: 23.07.2002 Beiträge: 452 Wohnort: NRW Medaillen: Keine
|
Verfasst am: 19.06.2003, 15:40 Titel: |
|
|
wenn ich aber 5 sprites auf dieses Spielfeld mehr zeichne dann hab ich "3" fps |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 19.06.2003, 19:11 Titel: |
|
|
Hazel hat Folgendes geschrieben: | Warum sollte die Framerate halbiert werden? |
Wenn bei jedem Framedurchlauf eine Microsekunde mehr verbraucht wird, als die V-Sync-Zeit zulässt, wartet das Flipping jedes mal darauf, bis das nachste VSynk erreicht wird. Ergo Halbierung der Framerate. _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 19.06.2003, 19:39 Titel: |
|
|
In der Theorie klings logisch aber in der Praxis kann ich das nicht nachvollziehen... _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
DarK Super JLI'ler
Anmeldedatum: 23.07.2002 Beiträge: 452 Wohnort: NRW Medaillen: Keine
|
Verfasst am: 20.06.2003, 14:08 Titel: |
|
|
kann mir vieleicht auch eine Lösung sagen ? |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 20.06.2003, 14:20 Titel: |
|
|
Selbstmord? (j/k).
Nee keine Ahnung... Auflösung verringern? Ist alles im Grafikspeicher und nicht im Hauptspeicher? =/ _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
gl_echse JLI'ler
Anmeldedatum: 01.01.2003 Beiträge: 105
Medaillen: Keine
|
Verfasst am: 20.06.2003, 18:22 Titel: |
|
|
vsync deaktivieren;) |
|
Nach oben |
|
|
DarK Super JLI'ler
Anmeldedatum: 23.07.2002 Beiträge: 452 Wohnort: NRW Medaillen: Keine
|
Verfasst am: 20.06.2003, 23:20 Titel: |
|
|
Zitat: | Auflösung verringern? |
bereits versucht, kommt trotzdem ... wenn ich über das spielfeld noch irgendwas packe dann schießt er sofort auf 5 fps runter ...
Zitat: | Ist alles im Grafikspeicher und nicht im Hauptspeicher? |
woran erkenn ich das ?
Zitat: | vsync deaktivieren;) |
welcher befehl ist das bei direct3d init ?
son scheiss |
|
Nach oben |
|
|
underberg JLI'ler
Anmeldedatum: 11.01.2003 Beiträge: 153
Medaillen: Keine
|
Verfasst am: 21.06.2003, 04:31 Titel: |
|
|
Zitat: | Zitat: | Ist alles im Grafikspeicher und nicht im Hauptspeicher? |
woran erkenn ich das ? |
Bei der Initialisierung der Sprites...
Entweder du hast VIDEO_MEMORY oder SYSTEM_MEMORY angegegeben... |
|
Nach oben |
|
|
DarK Super JLI'ler
Anmeldedatum: 23.07.2002 Beiträge: 452 Wohnort: NRW Medaillen: Keine
|
Verfasst am: 21.06.2003, 13:26 Titel: |
|
|
weder bei D3D init oder der erstellung von Sprites habe ich eins dieser beiden...
im buch kann ich auch nürgend diese 2 Angaben zu D3D finden ... |
|
Nach oben |
|
|
magynhard Super JLI'ler
Anmeldedatum: 26.04.2003 Beiträge: 461 Wohnort: Wild durch die Welt ;-) Medaillen: Keine
|
Verfasst am: 21.06.2003, 14:55 Titel: |
|
|
"Die primäre Oberfläche"
(altes) Buch Seite 286 (code) und auf 287 wird das nochmals erwähnt, was das genau ist
Wenn du es nirgends verwendest, kann es sein, dass dann die (vergleichsweise extrem langsame) Festplatte verwendet wird? _________________ Niemand ist hoffnungsloser versklavt als der, der fälschlich glaubt frei zu sein. [J. W. Goethe]
|
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 21.06.2003, 15:45 Titel: |
|
|
Ich glaube nicht, dass DirectX für Grafiken viruellen Arbeitsspeicher verwenden würde... das wäre lachhaft. :P _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
|