Ty záseky jsou zvláštní, ještě bych opravdu prověřil driver grafické karty, je možné, že s jinou verzí to dělat nebude. Ještě mě napadá, že by nějaké nepravidelnosti mohla způsobovat nějaká zaokrouhlovací chyba, ale když jsem to pustil u sebe, nic jsem nepozoroval. Co se týče časovače, typicky se to u her řeší tak, že v každém updatu si do nějaké proměnné přičtete počet milisekund, kolik trval poslední snímek, a řídíte se podle toho. Používat Windows Forms timer není vhodné, ten potřebuje message queue, v .NETu je ještě Threading.Timer, ale ten pouští handler zase na jiném vlákně, což také není ideální. Takže si klidně napište vlastní třídu Timer, která si bude v updatu přičítat do proměnné počet milisekund a jakmile přesáhne 1000, tak 1000 odečtete a provedete nějaký kód.
|