OpenGL projem için bir yükleme ekranı oluşturmaya çalışıyorum ve düzgün çalışmasını sağlamak için bunu iş parçacığı kullanmak en iyisi olduğunu okudum. Benim iplikle benim işlevi çağırmak çalışıyorum ama bu hataları almaya devam:Bir derste iş parçacığını nasıl kullanırım?
hata C2064: terim 3 argümanlardır
IntelliSense'i alarak bir işleve değerlendirmek değildir: yapıcı hiçbir örnek "std :: iplik :: iplik" ile eşleşir argüman listesi argüman türleri şunlardır: (void (Ekran * newScreen, bool activeVisuals, bool activeControls), Oynatma ekranında *, bool, bool)
Bu benim kodudur:
//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;
}
Bunu yaparken iş parçacığının OpenGL ile nasıl oynandığını anladığınızdan emin olun. Ne tür kaynaklar yüklediğinizi bilmiyorum, ancak kaynakları paylaşan veya harita/unmap arabellek belleğini paylaşan çok sayıda render bağlamı kullanıyorsanız, CPU/GPU eşitleme sorunları yaşayabilirsiniz. –
@ AndonM.Coleman Evet Bir şeyleri iş parçacığı ile çalışmak için sorun yaşıyor gibi görünüyor. Böyle bir bilgiyi bulamadığım istisnalar atmaya devam ediyor: [program adı] 'nda 0x00E9E2C9'da işlenmeyen özel durum 0xC0000005: Erişim ihlali yazma konumu 0x00000020. – WhyYouNoWork