我正在尝试启用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!
答案 0 :(得分:0)
正如doqtor所指出的那样,将这些行放在
#pragma OPENCL EXTENSION cl_khr_gl_sharing : enable
#pragma OPENCL EXTENSION cl_khr_gl_depth_images : enable
位于OpenCL C源代码的顶部,而不是C ++代码中。
默认情况下,所有可用扩展的C ++部分均已启用,并且扩展所需的功能会自动编译到可执行文件中。