【问题标题】:GLX context for creating OpenCL context用于创建 OpenCL 上下文的 GLX 上下文
【发布时间】:2012-01-01 02:58:02
【问题描述】:

问题:如何获取 GLXContext 并将其传递给 clCreateContextFromType?


信息:

我正在学习 openGL CL 互操作的工作原理。我已经了解了 openCL 的工作原理以及 openGl 的工作原理,现在我正处于使它们一起工作的最后一步。我正在使用 glut,但后来开始使用 GLX,因为我需要一个 GL 上下文,以便 CL 能够从中创建它的上下文。我将 GLXContext 保存为全局变量,并将其传递给 clCreateContextFromType,编译时得到:

error: invalid conversion from ‘GLXContext {aka __GLXcontextRec*}’ to ‘cl_context_properties {aka long int}’

所以我在互联网上跑来跑去,从这个blog 中找到了一些建议,并制作了一个包含 {CL_GLX_DISPLAY_KHR, glc} 的 cl_context_properties 列表。它抛出了完全相同的错误。我在这里想念什么?为了使这个 GLX 上下文适合 openCL 采用,显然需要发生一些事情。我错过了什么?

【问题讨论】:

    标签: opengl opencl


    【解决方案1】:

    我想通了:

    cl_context_properties props[] =
    {
        CL_GL_CONTEXT_KHR, (cl_context_properties)glXGetCurrentContext(),
        CL_GLX_DISPLAY_KHR, (cl_context_properties)glXGetCurrentDisplay(),
        CL_CONTEXT_PLATFORM, (cl_context_properties)(platform_id),
        0
    };
    

    它为什么起作用我真的不知道。但我找到了here

    【讨论】:

    • 嗯,这是一个所谓的属性列表。此类列表用于为函数提供任意数量的参数。偶数元素 (0, 2, 4, ...) 告诉 什么 与每个奇数编号参数一起提供。
    • 既然您自己找到了答案,也请接受它以将问题标记为已解决。
    • 我仍然不明白为什么我可以将它投射到属性列表中但不能以不同的方式投射它。不过谢谢。
    猜你喜欢
    • 2021-04-08
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    • 2017-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多