| 34 | #if !defined(LUXRAYS_DISABLE_OPENCL) |
| 35 | |
| 36 | static void CreateBox(Scene *scene, const string &objName, const string &meshName, |
| 37 | const string &matName, const bool enableUV, const BBox &bbox) { |
| 38 | Point *p = (Point *)Scene::AllocVerticesBuffer(24); |
| 39 | // Bottom face |
| 40 | p[0] = Point(bbox.pMin.x, bbox.pMin.y, bbox.pMin.z); |
| 41 | p[1] = Point(bbox.pMin.x, bbox.pMax.y, bbox.pMin.z); |
| 42 | p[2] = Point(bbox.pMax.x, bbox.pMax.y, bbox.pMin.z); |
| 43 | p[3] = Point(bbox.pMax.x, bbox.pMin.y, bbox.pMin.z); |
| 44 | // Top face |
| 45 | p[4] = Point(bbox.pMin.x, bbox.pMin.y, bbox.pMax.z); |
| 46 | p[5] = Point(bbox.pMax.x, bbox.pMin.y, bbox.pMax.z); |
| 47 | p[6] = Point(bbox.pMax.x, bbox.pMax.y, bbox.pMax.z); |
| 48 | p[7] = Point(bbox.pMin.x, bbox.pMax.y, bbox.pMax.z); |
| 49 | // Side left |
| 50 | p[8] = Point(bbox.pMin.x, bbox.pMin.y, bbox.pMin.z); |
| 51 | p[9] = Point(bbox.pMin.x, bbox.pMin.y, bbox.pMax.z); |
| 52 | p[10] = Point(bbox.pMin.x, bbox.pMax.y, bbox.pMax.z); |
| 53 | p[11] = Point(bbox.pMin.x, bbox.pMax.y, bbox.pMin.z); |
| 54 | // Side right |
| 55 | p[12] = Point(bbox.pMax.x, bbox.pMin.y, bbox.pMin.z); |
| 56 | p[13] = Point(bbox.pMax.x, bbox.pMax.y, bbox.pMin.z); |
| 57 | p[14] = Point(bbox.pMax.x, bbox.pMax.y, bbox.pMax.z); |
| 58 | p[15] = Point(bbox.pMax.x, bbox.pMin.y, bbox.pMax.z); |
| 59 | // Side back |
| 60 | p[16] = Point(bbox.pMin.x, bbox.pMin.y, bbox.pMin.z); |
| 61 | p[17] = Point(bbox.pMax.x, bbox.pMin.y, bbox.pMin.z); |
| 62 | p[18] = Point(bbox.pMax.x, bbox.pMin.y, bbox.pMax.z); |
| 63 | p[19] = Point(bbox.pMin.x, bbox.pMin.y, bbox.pMax.z); |
| 64 | // Side front |
| 65 | p[20] = Point(bbox.pMin.x, bbox.pMax.y, bbox.pMin.z); |
| 66 | p[21] = Point(bbox.pMin.x, bbox.pMax.y, bbox.pMax.z); |
| 67 | p[22] = Point(bbox.pMax.x, bbox.pMax.y, bbox.pMax.z); |
| 68 | p[23] = Point(bbox.pMax.x, bbox.pMax.y, bbox.pMin.z); |
| 69 | |
| 70 | Triangle *vi = (Triangle *)Scene::AllocTrianglesBuffer(12); |
| 71 | // Bottom face |
| 72 | vi[0] = Triangle(0, 1, 2); |
| 73 | vi[1] = Triangle(2, 3, 0); |
| 74 | // Top face |
| 75 | vi[2] = Triangle(4, 5, 6); |
| 76 | vi[3] = Triangle(6, 7, 4); |
| 77 | // Side left |
| 78 | vi[4] = Triangle(8, 9, 10); |
| 79 | vi[5] = Triangle(10, 11, 8); |
| 80 | // Side right |
| 81 | vi[6] = Triangle(12, 13, 14); |
| 82 | vi[7] = Triangle(14, 15, 12); |
| 83 | // Side back |
| 84 | vi[8] = Triangle(16, 17, 18); |
| 85 | vi[9] = Triangle(18, 19, 16); |
| 86 | // Side back |
| 87 | vi[10] = Triangle(20, 21, 22); |
| 88 | vi[11] = Triangle(22, 23, 20); |
| 89 | |
| 90 | // Define the Mesh |
| 91 | if (!enableUV) { |
| 92 | // Define the object |
| 93 | scene->DefineMesh(meshName, 24, 12, (float *)p, (unsigned int *)vi, NULL, NULL, NULL, NULL); |
no test coverage detected