Sto provando a creare una schermata di caricamento per il mio progetto OpenGL e ho letto che per farlo funzionare correttamente era meglio usare il threading. Sto cercando di chiamare la mia funzione con il mio thread, ma continuo a ricevere questi errori:Come si usa il threading in una classe?
errore C2064: Il termino non restituisce una funzione di prendere 3 argomenti
IntelliSense: nessuna istanza di costruttore "std :: :: filo filo" corrisponde ai tipi di argomenti lista degli argomenti sono: (void (* schermo newScreen, activeVisuals bool, activeControls bool), PlayScreen *, bool, bool)
Questo è il mio codice:
//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;
}
Assicurati di aver capito come funziona il threading con OpenGL. Non so che tipo di risorse si sta caricando, ma è possibile che si verifichino problemi di sincronizzazione CPU/GPU se si utilizzano più contesti di rendering che condividono risorse o memoria di memoria map/unmap. –
@ AndonM.Coleman Sì, sembra che stia avendo problemi a far funzionare le cose con il threading. Continua a generare eccezioni che non riesco a trovare alcuna informazione su come: eccezione non gestita a 0x00E9E2C9 in [nome programma] 0xC0000005: posizione di scrittura violazione di accesso 0x00000020. – WhyYouNoWork