如何启用OpenCL扩展?

如何启用OpenCL扩展?,opencl,Opencl,我正在尝试启用OpenCL扩展cl\u khr\u gl\u depth\u images,以完成以下工作: glGenRenderbuffers(1, &gl_depthbuffer); glBindRenderbuffer(GL_RENDERBUFFER, gl_depthbuffer); glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT32F, width, height); glFramebufferRenderb

我正在尝试启用OpenCL扩展
cl\u khr\u gl\u depth\u 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);
目前,我从
clcreatefromgrenderbuffer
调用
CL\u无效的图像\u格式\u描述符中得到以下错误

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

#include <CL/cl.hpp>

#pragma OPENCL EXTENSION cl_khr_gl_sharing : enable
#pragma OPENCL EXTENSION cl_khr_gl_depth_images : enable
#包括
#pragma OPENCL扩展cl_khr_gl_共享:启用
#pragma OPENCL扩展cl_khr_gl_depth_图像:启用
但是我的编译器给出了两个未知的pragma警告,我仍然得到
CL\u无效的\u图像\u格式\u描述符
错误

我包含的扩展是错误的还是不能在opencl中使用深度渲染缓冲区

编辑:我的设备支持所讨论的扩展!

正如前面所指出的,把这些行

#pragma OPENCL扩展cl_khr_gl_共享:启用
#pragma OPENCL扩展cl_khr_gl_depth_图像:启用

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


默认情况下,所有可用扩展的C++部分都被启用,扩展的所需函数自动编译为可执行文件。

在包含<代码> > PrimaPracl OpenCL扩展< /C> >之前,请使用该语法,而不是在C++中使用,而是在OpenCL中使用。谢谢,但是我如何确保在C++之前启用所有扩展?执行需要这些扩展的代码?在C++C++代码之前加载CulcEdioStutySo源文件是否足够?