Počet vykreslení za sekundu – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Počet vykreslení za sekundu – .NET – Fórum – Programujte.comPočet vykreslení za sekundu – .NET – Fórum – Programujte.com

 

JirkaEr0
Newbie
17. 6. 2016   #1
-
0
-

Ahoj,

vytvořil jsem si Form, ve kterém vykresluju pozadí a na něj obrázek.

Rád bych získal např: 30 vykreslení za sekundu, ale při zvětšení Formu dochází k tomu, že se rychlost vykreslení zpomaluje.

Poradíte mi prosím, jak na to jít? Tady jsou kousky kódu, které v projektu používám.

frequency = new Timer();
frequency.Enabled = false;
frequency.Interval = 1000/30;
frequency.Tick += new EventHandler(frequencyTick);

private void frequencyTick(object sender, EventArgs e)
{
	...some logic
        
	this.Invalidate(true);
}

Možná na to jdu špatně, ale říkám si - hry přece dokáží vykreslovat na celou obrazovku klidně i 60 snímků za sekundu.

Poradíte mi prosím, jak rychle překřeslovat obrázky?

Děkuji.

Nahlásit jako SPAM
IP: 193.179.215.–
peter
~ Anonymní uživatel
4016 příspěvků
17. 6. 2016   #2
-
0
-

"hry přece dokáží vykreslovat na celou obrazovku klidně i 60 snímků za sekundu"
:)
Je treba si uvedomit, ze vykreslovani grafiky hry resi GPU a ne CPU. Kdyz hraji Lol, nemam nb v zasuvce, tak mi prepne vykreslovani pres integrovanou krafickou kartu a nedostanu vic nez 15-20 FPS. Na druhe graficke karte mivam i 30-150 FPS.

Pozadi formulare vykresluje prohlizec. Ten nema akceleraci pres GPU. Ale uz na om pracuji aspon pro video. Takze se tu bavme o realne hodnote, pri trose stesti, do 10 fps :)
Zmin se treba o tom, jaky  web prohlizec pro to pouzivas?
FF na obrazky pouziva canvas objekt. Tam by to melo vykreslovat rychle. A mozna to ma urychlene i pres GPU. Chtelo by to mozna googlem zjistit, jak resi video a streamovani pres ten google format.
IE je na tom hodne spatne s javascriptem a mozna i videem. A nebo to pousti pres media-player, ktery ma optimalizovany.

Full screen mod. To je dalsi vychytavka. V tomto modu se potlaci vsechny ostatni procesy pc a preda se hlavni priorita programu. Pokud je teda vic programu, tak tomu aktivnimu. Takze najednou mas vic prostoru pro vypocty a nebrzdi ti rychlost v pozadi programy jako skype, antiviry, viry a podobne smejdy.
Ale prekresluje se strasne moc pixelu, treba u mne 2000x1000, 2MPX. Cim vic natahujes obraz na velikosti, tim vic je pixelu. 1950x950 = 1.85MP (92%), coz muze byt 8% k rychlosti a jen pri ztrate okraje 25px na kazde strane (oramovani win okenka).
Z toho plyne, ze cim mensi plocha se prekresluje, tim lepe. Uzivateli bych nabidl moznost zastavit animaci a nestahovat dalsi stream (coz mne vytaci na youtube, ze si chces zkouknou tak 5s videa a dal uz ne a on stahuje zbytecne dalsi data tech par sekund nez se ti podari zmenit adresu stranky; zbytecna zatez serveru...).

Oc presne bezi? Mas video? Nebo hru? A nemohl bys to resit tak, ze je tam stabilni pozadi a jen prekreslujes urcite male oblasti?

Nebo ted jsou 4 jadrove cpu. Tam se da vyuzit vice vlaken, pokud ti nestiha dekompresor videa (ale nejspis to nepodporuje).

Nahlásit jako SPAM
IP: 2001:718:2601:26c:48b5:b5...–
RomanZ
~ Anonymní uživatel
272 příspěvků
17. 6. 2016   #3
-
0
-

On možná nechce webovou stránku, ale WinForms.

Nahlásit jako SPAM
IP: 194.212.10.–
velurex0
Stálý člen
17. 6. 2016   #4
-
0
-

Taky jsem pochopil, že tazateli jde o WinForm, nicméně odpověď je stejná jako ta *urevsky dlouhá výše. :) WinForms nemají podporu DirectX takže boj o FPS je zde marný. Doporučil bych buďto WPF nebo, pokud je to pro potřeby hry, přímo nějaký herní framework (nejznámější je asi Unity)

Nahlásit jako SPAM
IP: 85.71.115.–
Radek Chalupa
~ Redaktor
+1
Super člen
17. 6. 2016   #5
-
0
-

Pokud bys to psal v C++, mohl bys použít Direct2D, což je hardwarově akcelerované a výrazně rychlejší než GDI/GDI+. Zkus ten form udělat v projektu typu C++ - class library, pak ho můžeš použít i v C# aplikaci. Ještě k tomu timeru: myslím že ten .NET Timer zapouzdřuje běžný Win32 timer (tj. fce SetTimer) a nikoliv tzv. hi-resolution timery, a mám pocit že minimální "rozlišovací schopnost" je cca 40ms,  25 za sekundu.

Radek Chalupa 
- individuální konzultace, školení programování (C/C++, WinAPI, COM, ActiveX, ATL, C#, NET Framework, MFC) 
- vývoj software na zakázku 
http://www.radekchalupa.cz

Nahlásit jako SPAM
IP: 89.177.51.–
JirkaEr0
Newbie
17. 6. 2016   #6
-
0
-

Moc věem děkuji za rady.

Ano, měl jsem na mysli WinForms. Pravděpodobně začnu tím, že to zkusím napsat v C++ a pak bych vyzkoušel i ten herní framework (Unity).

Ještě jednou všem díky. Kdyby někdo měl zájem, zde je hotový projekt (https://sourceforge.net/…cts/vumeter/), možno vyzkoušet (vyžaduje instalaci). Je to takový málý projekt, takže můžu poskytnout i zdrojové kódy. Při zvětšení okna jde vidět, jak se rychlost vykreslování ručičky zpomaluje.

Díky všem.

Nahlásit jako SPAM
IP: 78.157.131.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 19 hostů

Podobná vlákna

Vykreslení obrázku — založil Braba

Vykreslení písmena — založil shockwave

Vykreslení obrazce — založil Bobacz

Vykreslení kružnice — založil RePRO

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý