与当前OpenGL Context对应的唯一OpenGL Context
Unique OpenCL Context corresponding with a current OpenGL Context
我试图找到最接近当前OpenGL上下文的OpenCL设备来做OpenCL/OpenGL互操作。通过OpenCL扩展clGetGLContextInfoKHR()和CL_CURRENT_DEVICE_FOR_GL_CONTEXT_KHR参数,我可以为特定的OpenCL平台和特定的(当前)OpenGL上下文请求此设备。
我的MacBook Pro上有两个OpenCL平台(OpenCL 1.1 (NVIDIA)和OpenCL 1.2 (Intel))。奇怪的是,对于这两个平台clGetGLContextInfoKHR()返回一个结果,即使OpenGL上下文运行在NVIDIA上。是我做错了什么,还是clGetGLContextInfoKHR()总是产生唯一的结果?
要根据最近的MBP上的当前显卡获取当前上下文,您可以使用:
CGLShareGroupObj kCGLShareGroup = CGLGetShareGroup(cgl_ctx);
cl_context_properties props[] =
{
CL_CONTEXT_PROPERTY_USE_CGL_SHAREGROUP_APPLE, (cl_context_properties)kCGLShareGroup,
CL_CONTEXT_PLATFORM, (cl_context_properties)_platform,
0
};
_context = clCreateContext(props, 0, NULL, NULL, NULL, &err);
err = clGetGLContextInfoAPPLE(_context, cgl_ctx, CL_CGL_DEVICE_FOR_CURRENT_VIRTUAL_SCREEN_APPLE, sizeof(_deviceID), &_deviceID, NULL);
其中cgl_ctx是你的CGLContextObj, _platform是你使用
得到的平台unsigned int platformCount;
err = clGetPlatformIDs(1, &_platform, &platformCount);
and _context是你的cl_context
相关文章:
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 了解 GLM- openGL 中的相机转换
- 如何在全屏模式下(在OpenGL中)使背景透明
- 为什么我不能使用 EGL 创建无头 OpenGl 上下文?
- OpenGL大的3D纹理(>2GB)非常慢
- OpenGl glm rotate
- C++atioglxx.pdb未加载错误glBufferData OpenGL
- OpenGL在启用深度测试时不会丢弃我的碎片
- OpenGL相机和相机空间转型的困惑
- C++错误:"error: int aaa::bbb is protected within this context"
- OpenGL将纹理四边形渲染为(0,0)
- OpenGL 和 GLM 矩阵无法正确扩展,总是按比例缩小
- 发布旋转矩阵(openGL/glm)
- 如何在Visual Basic中使用矩形函数OpenGL绘制矩形
- 无法使用VAO和EBO(openGL)绘制多个对象
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- OpenGL 16 位模板缓冲区?
- 将QOpenGLWidget子类转换为使用Metal而不是OpenGL的子类是否可行?
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- 与当前OpenGL Context对应的唯一OpenGL Context