how to pass a complex hierarchical structure to OpenCL

Discussion created by spectral on Jan 3, 2010
Latest reply on Jan 3, 2010 by nou


I have a raytrace software and would like to implement a part of it with OpenCL.
In order to do this I must pass the entire scene information to OpenCL...

My problem is that it is a complex 'structure/class' hierarchy that use a lot of pointers.

And I don't know an efficient way to pass this scene information to OpenCL.

By example :

struct Scene
   Lights * lights;
   InstanceList * instanceList;

struct InstanceList
    Instance * instance;
    int Count;

struct Instance
    Geometry * geometry;
    Instance * next;

struct Geometry
   int GeometryType; // 0 = sphere, 1 = cylinder, 2 = Triangle mesh
   Sphere * sphere;
   Cylinder * cylinder;
   TriangleMesh * triangleMesh;

struct TriangleMesh
    int[] Indices;
    float[] Vertices;

So, with this (simplified) version of the scene, how can I pass this information to openCl and use it ?

Thanks for your help