【发布时间】:2016-12-08 09:41:13
【问题描述】:
在 MacOS 上开发 Maya API 插件,我试图在并行线程中进行一些繁重的计算,然后将结果存储在 OpenGL VBO 中。
线程的创建和执行工作正常,直到我需要执行 GL 操作,当 Maya 崩溃时。
我使用CGLEnable( CGLGetCurrentContext(), kCGLCEMPEngine); 在 OpenGL 上启用了多线程,但这并没有帮助。
因此,我的想法是在并行线程上进行计算,并在完成后在主线程中进行 GL 处理。
如何从并行线程在主线程上执行某些功能?
{ // Main thread
MStatus stat = MThreadAsync::init();
if( MStatus::kSuccess != stat ) {
MString str = MString("Error creating MThreadAsync");
MGlobal::displayError(str);
}
else
{
MThreadAsync::createTask(createOpenGLVBOs, NULL ,NULL);
}
}
void createOpenGLVBOs(void *data) // PARALLEL THREAD
{
...heavy calculations...
GLuint nb;
glGenBuffers(1, &nb); --> CRASH
}
【问题讨论】:
标签: c++ multithreading macos opengl maya