unsigned int convertLineSegments(ISPCLineSegments* mesh, RTCScene scene_out) { unsigned int geomID = rtcNewLineSegments (scene_out, RTC_GEOMETRY_STATIC, mesh->numSegments, mesh->numVertices, mesh->v2 ? 2 : 1); rtcSetBuffer(scene_out,geomID,RTC_VERTEX_BUFFER,mesh->v,0,sizeof(Vertex)); if (mesh->v2) rtcSetBuffer(scene_out,geomID,RTC_VERTEX_BUFFER1,mesh->v2,0,sizeof(Vertex)); rtcSetBuffer(scene_out,geomID,RTC_INDEX_BUFFER,mesh->indices,0,sizeof(int)); return geomID; }
unsigned int convertLineSegments(ISPCLineSegments* mesh, RTCScene scene_out) { /* if more than a single timestep, mark object as dynamic */ RTCGeometryFlags object_flags = mesh->numTimeSteps > 1 ? RTC_GEOMETRY_DYNAMIC : RTC_GEOMETRY_STATIC; /* create object */ unsigned int geomID = rtcNewLineSegments (scene_out, object_flags, mesh->numSegments, mesh->numVertices, mesh->numTimeSteps); /* generate vertex buffer */ Vec3fa* vertices = (Vec3fa*) rtcMapBuffer(scene_out,geomID,RTC_VERTEX_BUFFER); for (size_t i=0;i<mesh->numVertices;i++) vertices[i] = mesh->positions[0][i]; rtcUnmapBuffer(scene_out, geomID, RTC_VERTEX_BUFFER); /* set index buffer */ rtcSetBuffer(scene_out,geomID,RTC_INDEX_BUFFER,mesh->indices,0,sizeof(int)); return geomID; }
extern "C" unsigned ispcNewLineSegments (RTCScene scene, RTCGeometryFlags flags, size_t numSegments, size_t numVertices, size_t numTimeSteps) { return rtcNewLineSegments(scene,flags,numSegments,numVertices,numTimeSteps); }