Dobrý den,
v poslední době dělám ve volném čase raycaster, něco na styl renderovacího enginu wolfensteina 3d.
V C++ teprve začínám a tak je možné že mi tu uniká nějaká úplně jednoduchá věc.
Herní mapa je uložena do 2 rozměrného arraye int Map[20][20], potom jsou nějaké výpočty paprsků atd. Ovšem důležitá je část, kdy porovnávám, jestli se na nějakém místě v mapě nachází nebo nenachází zeď.
Program jede asi na 85 FPS, což je na něco tak jednoduchého příliš málo. Když jsem spustil profiler, zjistil jsem, že nejvíce program zpomaluje tato část kódu:
if (Map[CheckY][CheckX] != 0)
{
break;
}
Tenhle kód vlastně jen ukončí porovnávací cyklus, protože je porovnávané místo různé od nuly, takže paprsek trefil zeď. Jenom nechápu, proč právě tato část programu běží tak pomalu. Je sice pravda, že tento proces kontroly místa v mapě běží vícekrát něž je nutno, protože jsem ho ještě plně nedodělal, ovšem není to jediná věc která běží vícekrát než je nutno. A přesto jen ona dělá takové potíže.
Nevíte tedy někdo co bych měl dělat?