1

目前我正在尝试让 OpenCL<->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);

clCreateContext此代码在INVALID_VALUE错误期间失败。我知道这_clDevice是有效的,因为我的 OpenCL-Only-Context 工作正常,但我发现 CGLGetCurrentContext() 总是返回0。我认为这是“无效值”,但为什么总是这样0?我必须手动创建上下文吗?我将它用作 C++/Qt 程序的一部分。

4

1 回答 1

0

尝试删除

CL_CONTEXT_PLATFORM, (cl_context_properties)this->_clPlatform

完全地。它只对我有用CL_CONTEXT_PROPERTY_USE_CGL_SHAREGROUP_APPLE

于 2012-05-29T16:12:25.693 回答