如何将BufferedImage数据直接传递给OpenCL?

时间:2013-03-15 19:25:16

标签: java arrays graphics opencl

我正在尝试使用JavaCL OpenCL绑定库在我的图形渲染引擎中使用OpenCL内核。

我遇到的问题是我需要将BufferedImage像素数据数组直接传递给OpenCL内核,以便进行修改。复制到本机Pointer对象然后在计算之后重新复制可能会消除首先使用OpenCL的性能优势,所以我真的试图避免这种情况。

我希望使用IntBuffer直接修改像素数据,但分配的缓冲区必须是直接的,如果使用wrap(int[])则无法做到(请参阅BridJ documentation了解更多信息)。

所以现在我一直坚持如何使这项工作。我要求提出任何建议的解决方案或解决方法,无论是直接使用数组还是仅使用图像,指针等使用不同的OpenCL功能。

感谢任何帮助。提前谢谢。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用java.nio.ByteBuffer。我相信你可以这样做:

byte[] temp = new byte[54];

ByteBuffer buffer = ByteBuffer.allocateDirect(54);

然后:buffer.putInt(int someInt[]);

相关问题