我正在使用一个内核,该内核将图像作为 java 和 JOCL 的参数
input ="12.jpg";
image = createBufferedImage(input);
image = createBufferedImage(input);
DataBufferInt dataBufferSrc = (DataBufferInt)image.getRaster().getDataBuffer();
int dataSrc[] = dataBufferSrc.getData();
inputImageMem = clCreateBuffer(context, CL_MEM_READ_ONLY| CL_MEM_USE_HOST_PTR,
dataSrc.length * Sizeof.cl_uint, Pointer.to(dataSrc), null);
clSetKernelArg(kernel, 0, Sizeof.cl_mem, Pointer.to(inputImageMem));
编译时出现错误:
Pointer may not point to null objects
它在行中:
clSetKernelArg(kernel, 0, Sizeof.cl_mem, Pointer.to(inputImageMem));
可能的问题是什么?我该如何修复它?
PS:createBufferedImage
是取自 JOCL 示例的函数
http://jocl.org/
最佳答案
来自 openCL clCreateBuffer documentation :
Returns a valid non-zero buffer object and errcode_ret is set to CL_SUCCESS if the buffer object is created successfully. Otherwise, it returns a NULL value with one of the following error values returned in errcode_ret...
clCreateBuffer
函数的最后一个参数是一个 int 指针(您希望返回错误代码的位置)。您当前已将其设置为 null
。我的猜测是 clCreateBuffer
中出现了某些问题。我建议检查 errcode_ret
的值,它将包含一个错误代码,可帮助您解决问题。
关于java - java openCL 指针不能指向空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37968216/