Я пишу трассировщик лучей OpenCL, используя JOCL (привязки OpenCL для Java). Я хочу передать ядру массив структур. Структура выглядит так:
struct Sphere {
float3 center;
float radius;
int materialIndex;
};
, а ядро принимает ее так:
__kernel void raytraceKernel(
__constant struct Sphere *spheres,
etc...
Как лучше всего это сделать? Изначально в структуре не было поля materialIndex
, поэтому я просто создал массив чисел с плавающей запятой в Java, заполнил его центром, радиусом и заполнением и отправил его ядру. Однако, когда я добавил materialIndex
, я решил преобразовать свою программу для использования буферов NIO, которые не работали (данные были повреждены).
Есть ли лучший подход к передаче массива структур в ядро с JOCL?