Toon posts:

[C# / DirectX] een Fps limiet

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik probeer dus een limiet op fps te maken voor mij DirectDraw application.
de bedoeling is dus dat de fps niet over bv. 100 fps gaat en mocht tie dat wel doen dat er een halt word toegeroepen zodat tie onder de 100 fps blijft.

ik zelf dacht aan dit

C#:
1
2
3
4
if(dFps > 100)
{
System.Threading.Thread.Sleep(10);
}


maar dit geeft omstebeurt een fps net onder de 100 en een fps bij de 3000


alvast bedankt,

Johnny

Verwijderd

gewoon na ieder frame kijken hoeveel tijd je nodig hebt gehad voor dat frame

code:
1
2
3
         /  1              \
sleep    | ---  - FrameTime |
         \ 100             /

om de resterende tijd op te vullen.

Wat netter is is waarschijnlijk kijken naar de verticale sync van je monitor voorkomt ook gelijk wat tearing enzo..

[ Voor 4% gewijzigd door Verwijderd op 18-06-2003 01:08 ]


Verwijderd

Topicstarter
Ok ik heb nu dus dit wat ook blijkt te werken

C#:
1
2
3
4
5
6
7
8
9
dMilliSec+= Timer.GetElapsedMilliSeconds();
if(dMilliSec > 10.0)
{
// handle input
// do drawing
// flip the backbuffer

dMilliSec = 0.0;
}

[ Voor 26% gewijzigd door Verwijderd op 18-06-2003 09:13 ]