2012-05-25 83 views
0

當前我正在嘗試獲取OpenCL < - > OpenGL互操作功能。我的代碼來獲得一個共享上下文:在clCreateContextINVALID_VALUE錯誤在OS X上獲取當前OpenGL上下文

cl_int error = 0; 
CGLContextObj glContext = CGLGetCurrentContext(); 

CGLShareGroupObj shareGroup = CGLGetShareGroup(glContext); 
cl_context_properties props[] = 
{ 
    CL_CONTEXT_PROPERTY_USE_CGL_SHAREGROUP_APPLE, (cl_context_properties)shareGroup, 
    CL_CONTEXT_PLATFORM, (cl_context_properties)this->_clPlatform, 
    0 
}; 

context = clCreateContext(props, 1, &this->_clDevice, NULL, NULL, &error); 

此代碼失敗。我知道_clDevice是有效的,因爲使用我的OpenCL-Only-Context可以正常工作,但我發現CGLGetCurrentContext()始終返回0。我認爲這是「無效的價值」,但爲什麼總是0?我是否必須手動創建上下文?我使用它作爲C++/Qt程序的一部分。

回答

0

嘗試徹底去除

CL_CONTEXT_PLATFORM, (cl_context_properties)this->_clPlatform 

。它只適用於我使用CL_CONTEXT_PROPERTY_USE_CGL_SHAREGROUP_APPLE