Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

11

07.11.2004, 03:24

also an der fps-berechnung kanns eigentlich auch nicht liegen.
ich hab grad mal ein d3d-sample so umgebaut,
das es meine berechnungsmethode benutzt und da passt alles
ich verstehs langsam nimmer.
die schwankungen sind auch so seltsam periodisch.
hab das teil übrigens auch mal bei nem kumpel laufen
lassen, der mit 85 hz refresh arbeitet...das gleiche,
nur das bei ihm die framerate "lediglich" zwischen 70 - 160 schwankte
was schon mal besser is als
14 und 13000

kann das irgendwie mit window-messages zu sammenhängen?
mach ich was bei meiner nachrichtenschleife flasch? ich kann
mich übrigens nicht dran erinnern früher solche probleme gehabt zu haben

12

07.11.2004, 03:30

aus lauter verzweiflung, hier mal die einstellungen die ich benutze:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
    param->AutoDepthStencilFormat = D3DFMT_D24S8;
    param->BackBufferCount = 1;
    param->BackBufferFormat = bpp==32?D3DFMT_X8R8G8B8:D3DFMT_R5G6B5;
    param->BackBufferWidth = width;
    param->BackBufferHeight =  height; 
    param->EnableAutoDepthStencil = TRUE;
    param->Windowed = windowed;
    param->PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
    param->MultiSampleType = D3DMULTISAMPLE_NONE;
    param->hDeviceWindow = hwnd;
    param->SwapEffect = D3DSWAPEFFECT_FLIP;

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

13

07.11.2004, 12:47

Du könntest in schnellen Frames entweder nur ein Sleep(1) ausführen, um Windows Zeit zu geben, ein paar Hausaufgaben zu machen und nicht in einem späteren Frame, oder aber sogar so lange Sleepen bis Du die Standard-Frame-Länge erreicht hast. Letzteres hört sich zwar nach Pfusch an, wird aber z.B. von Micorsoft selber in CFS3 gemacht und ich würde mal tippen in mehr kommerziellen Spielen als die Entwickler zugeben ;).
"Games are algorithmic entertainment."

14

07.11.2004, 14:30

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
++frames;
            //framerate bestimmen

            if (QueryPerformanceCounter((LARGE_INTEGER*)&nF)){
                if (nF - lF > freq/2){
                    elapsed = (nF - lF);    
                    ftemp = freq*(frames / ((float)elapsed));
                    frames = 0;lF = nF ;
                }                   
            }               


habs jetzt so gemacht und die framerate scheint stabil genug zu sein...
schwankt nur ab und an mal zwischen 54 und 67 oder so.damit kann ich
leben. trotzdem versteh ich nicht worans liegt.


was is CFS3?

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

15

07.11.2004, 17:34

Combat Flight Sim 3.
Microsoft's letzter Kampfflug-Simulator.
"Games are algorithmic entertainment."

Werbeanzeige