OpenGL 在第二个线程中,在类中启动
OpenGL in a second thread, which is started in a class
我有一个 Window 类,它创建一个 OpenGL 窗口并启动渲染循环。如果我在 main 的线程中创建一个窗口,它可以工作。
void threadTest() {
Window w(800, 600, "Hallo Welt");
}
int main() {
std::thread t(threadTest);
sleep(5);
t.join();
return 0;
}
但是,如果我在引擎类中创建线程,它会出现段错误。
void Engine::createWindow(unsigned int width, unsigned int height, const std::string & title) {
m_rendering = new std::thread(&Engine::windowThread, * this, width, height, title);
}
void Engine::windowThread(unsigned int width, unsigned int height, const std::string & title) {
Window w(width, height, title);
}
int main() {
Engine e;
e.createWindow(800, 600, "Hallo Welt");
sleep(5);
return 0;
}
我做错了什么?
尝试将线程函数设置为静态。
即:
static void Engine::windowThread(
unsigned int width,
unsigned int height,
const std::string & title)
{
Window w(width, height, title);
}
如果需要传递类实例,请为 this 指针使用额外的参数。
相关文章:
- 使用 std::string () const 函数启动线程或未来
- C++ POCO - 如何在不使用 run() 方法的情况下启动线程池上的线程?
- 使用 std::thread & std::bind 在成员函数中启动线程
- GDB 输出启动线程,但给出输出
- 尝试在我的基类中启动线程时,Visual Studio 由于调试错误而中止我的程序
- 启动线程会导致指针初始化时出现分段错误
- OMP 不启动线程
- 在关闭时升级登录中的启动线程访问违规
- 如何在dllmain中启动线程
- 如何使用媒体基础在给定时间运行/启动线程
- 如何在另一个核心上启动线程而不将处理器亲和力设置为特定核心
- Qt多线程启动线程错误
- 在构造函数中使用"this"启动线程是安全的?
- 停止,然后启动线程
- C++/Win32 我在 Windows 2000+ 上启动线程的最佳方式
- 如何在事件发生时启动线程并严格关闭其句柄
- 从 Poco::HTTPServer 启动线程
- 在成员函数上启动线程时不需要的析构函数调用
- C++线程库,在完成前两个线程后启动线程
- 使用父窗口在对象中启动线程