Próbuję utworzyć ekran ładowania dla mojego projektu OpenGL i przeczytałem, że aby działał poprawnie, najlepiej było używać wątków. Próbuję zadzwonić do mojej funkcji z mojego wątku, ale wciąż otrzymuję te błędy:Jak używać wątków w klasie?
błędu C2064: termin nie ocenia do funkcji biorąc 3 argumenty
IntelliSense: nie Instancji konstruktora „STD :: :: gwint gwint”pasuje typy argumentów Argument lista są: (void (Ekran * newScreen, activeVisuals bool, activeControls Bool), ekranie odtwarzania *, bool, bool)
to jest mój kod:
//LoadingScreen
class LoadingScreen
{
LoadingScreen();
void LoadNewScreen(Screen* newScreen, bool activeVisuals, bool activeControls);
void Setup();
};
void LoadingScreen::LoadNewScreen(Screen* newScreen, bool activeVisuals, bool activeControls)
{
}
void LoadingScreen::Setup()
{
PlayScreen *playScreen = new PlayScreen();
std::thread first(LoadingScreen::LoadNewScreen,playScreen, true, true);// , playScreen, true, true);
first.join();
}
//source.cpp
LoadingScreen loadingScreen;
int main()
{
LoadingScreen loadingScreen = LoadingScreen();
loadingScreen.Setup();
return 0;
}
Upewnij się, że rozumiesz, w jaki sposób odtwarzanie wątków jest odtwarzane za pomocą OpenGL. Nie wiem, jakiego rodzaju zasoby ładujesz, ale możesz napotkać problemy z synchronizacją procesora/procesora graficznego, jeśli używasz wielu kontekstów renderowania, które współużytkują zasoby lub mapują/usuwają pamięć bufora. –
@ AndonM.Coleman Tak, wydaje mi się, że mam problemy z działaniem z wątkami. Ciągle wyrzuca wyjątki, które nie mogą znaleźć żadnych informacji na temat: Nieobsługiwany wyjątek przy 0x00E9E2C9 w [nazwa programu] 0xC0000005: Dostęp do zapisu zapisu lokalizacji 0x00000020. – WhyYouNoWork