我正在使用 JOCL(Java 的 OpenCL 绑定)编写 OpenCL 光线追踪器。我想将一个结构数组传递给我的内核。该结构如下所示:
struct Sphere {
float3 center;
float radius;
int materialIndex;
};
内核认为它是这样的:
__kernel void raytraceKernel(
__constant struct Sphere *spheres,
etc...
做这个的最好方式是什么?最初,该结构没有该materialIndex
字段,所以我只是在 Java 中创建了一个浮点数组,用中心、半径和填充填充它,然后将其发送到内核。但是,当我添加时,materialIndex
我决定将我的程序转换为使用 NIO 缓冲区,这不起作用(数据已损坏)。
有没有更好的方法来使用 JOCL 将结构数组传递给内核?