2013-03-15 26 views
2

我正在嘗試使用JavaCL OpenCL綁定庫來在我的圖形渲染引擎中使用OpenCL內核。如何將BufferedImage數據直接傳遞給OpenCL?

我遇到的問題是我需要將BufferedImage像素數據的數組直接傳遞到OpenCL內核,因此可以修改它。複製到本地指針對象,然後在計算後重新複製可能會首先消除使用OpenCL的性能優勢,所以我真的試圖避免這種情況。我希望可以使用IntBuffer直接修改像素數據,但分配的緩衝區必須是直接的,如果您使用wrap(int[])(請參閱BridJ documentation以獲取更多信息),則不可能使用該緩衝區。

所以現在我被困在如何使這項工作。我正在尋求任何建議的解決方案或解決方法,無論是直接使用陣列,還是僅僅通過圖像,指針等使用不同的OpenCL功能。

任何幫助表示讚賞。提前致謝。

回答

0

你可以嘗試使用java.nio.ByteBuffer。我相信你可以做這樣的事情:

byte[] temp = new byte[54]; 

ByteBuffer buffer = ByteBuffer.allocateDirect(54);

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