如何启用OpenCL扩展?

时间:2015-06-30 12:40:57

标签: opencl

我正在尝试启用OpenCL扩展程序cl_khr_gl_depth_images以进行以下工作:

glGenRenderbuffers(1, &gl_depthbuffer);
glBindRenderbuffer(GL_RENDERBUFFER, gl_depthbuffer);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT32F, width, height);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, gl_depthbuffer);

...

cl_depth = clCreateFromGLRenderbuffer(context, CL_MEM_READ_ONLY, gl_depthbuffer, &error);

目前我从clCreateFromGLRenderbuffer电话CL_INVALID_IMAGE_FORMAT_DESCRIPTOR收到以下错误。

我在cpp文件的顶部添加了以下行:

#include <CL/cl.hpp>

#pragma OPENCL EXTENSION cl_khr_gl_sharing : enable
#pragma OPENCL EXTENSION cl_khr_gl_depth_images : enable

但我的编译器提供了两个未知的编译指示警告,我仍然收到CL_INVALID_IMAGE_FORMAT_DESCRIPTOR错误。

我是否包含错误的扩展名,或者是否可以在opencl中使用深度渲染缓冲区?

修改:我的设备正在支持相关扩展程序! 的 The specification!

1 个答案:

答案 0 :(得分:0)

正如doqtor所指出的那样,将这些行放在

#pragma OPENCL EXTENSION cl_khr_gl_sharing : enable
#pragma OPENCL EXTENSION cl_khr_gl_depth_images : enable

位于OpenCL C源代码的顶部,而不是C ++代码中。

默认情况下,所有可用扩展的C ++部分均已启用,并且扩展所需的功能会自动编译到可执行文件中。