我正在尝试使用JavaCL OpenCL绑定库在我的图形渲染引擎中使用OpenCL内核。
我遇到的问题是我需要将BufferedImage像素数据数组直接传递给OpenCL内核,以便进行修改。复制到本机Pointer对象然后在计算之后重新复制可能会消除首先使用OpenCL的性能优势,所以我真的试图避免这种情况。
我希望使用IntBuffer直接修改像素数据,但分配的缓冲区必须是直接的,如果使用wrap(int[])
则无法做到(请参阅BridJ documentation了解更多信息)。
所以现在我一直坚持如何使这项工作。我要求提出任何建议的解决方案或解决方法,无论是直接使用数组还是仅使用图像,指针等使用不同的OpenCL功能。
感谢任何帮助。提前谢谢。
答案 0 :(得分:0)
您可以尝试使用java.nio.ByteBuffer。我相信你可以这样做:
byte[] temp = new byte[54];
ByteBuffer buffer = ByteBuffer.allocateDirect(54);
然后:buffer.putInt(int someInt[]);