【发布时间】:2015-02-18 09:30:50
【问题描述】:
我正在尝试为我的 OpenGL 项目创建一个加载屏幕,并且已经阅读了它以使其正常工作,最好使用线程。我试图用我的线程调用我的函数,但我不断收到这些错误:
错误 C2064:术语不计算为采用 3 个参数的函数
IntelliSense:没有构造函数“std::thread::thread”的实例与参数列表匹配 参数类型有:(void (Screen* newScreen, bool activeVisuals, bool activeControls), PlayScreen *, bool, bool)
这是我的代码:
//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;
}
【问题讨论】:
-
在执行此操作时,请确保您了解线程如何与 OpenGL 一起使用。我不知道您正在加载什么样的资源,但如果您使用共享资源或映射/取消映射缓冲内存的多个渲染上下文,您可能会遇到 CPU/GPU 同步问题。
-
@AndonM.Coleman 是的,我似乎无法让线程工作。它不断抛出我找不到任何信息的异常,例如: [程序名称] 0xC0000005 中 0x00E9E2C9 处的未处理异常:访问冲突写入位置 0x00000020。
标签: c++ multithreading opengl