OpenCL und struct als Argument
-
Hallo,
für ein Beispiel möchte ich der Kernel-Main Funktion ein Array von einem struct übergeben.
OpenCL - Code:
struct Sphere { int infoCode; double radius; double3 position, emission, color; ReflectionType refl; } __attribute__ ((packed)); enum ReflectionType { Diffuse = 0, Specular = 1, Refr = 2 } __attribute__ ((aligned (1))); __kernel void compute(__global struct Sphere *sp) { // ... }
So ich code in Java. Der OpenCL-Wrapper arbeitet ähnlich wie in C. Ich möchte das nur mal erwähnen, also nicht wichig.
Ok. Nach meiner Rechnung müsste die struct Sphere eine Größe von 81 bytes besitzen. Ich erstelle also einen CLByteBuffer, der die Größe 81 * ArraySize.
So weit, so gut. Aber wie fülle ich nun diesen Buffer korrekt? Ich muss auf Byte-Ebene ja den Byte-Order beachtenHat jemand eine Idee, wie ich die Daten der struct füllen kann?