Exemplo n.º 1
0
void ShapesWidget::initShapes()
{
  cleanupShapes();
  
  const unsigned numberOfShapes = 5;

  unsigned i = 1;
	

  auto toSelectPtr = createRandomShape();
  toSelect_ = toSelectPtr.get();
  while (i < numberOfShapes) {
    std::unique_ptr<Shape> s = createRandomShape();
    if (!sameShapeAndColor(s.get(), toSelect_)) {
      shapes_.push_back(std::move(s));
      i++;
    }
  }
  shapes_.insert(shapes_.begin() + randomInt((int)shapes_.size()), std::move(toSelectPtr));
}
Exemplo n.º 2
0
  Handle<Device::RTScene> createRandomScene(Device *device, size_t numLights, size_t numObjects, size_t numTriangles)
  {
    std::vector<Device::RTPrimitive> prims;

    //for (size_t i=0; i < numLights; i++)
    prims.push_back(device->rtNewLightPrimitive(createRandomLight(device), NULL, copyToArray(AffineSpace3f(one))));

    for (size_t i=0; i < numObjects; i++) {
      size_t s = numTriangles ? random<int>() % numTriangles : 0;
      prims.push_back(device->rtNewShapePrimitive(createRandomShape(device, s), createRandomMaterial(device), copyToArray(AffineSpace3f(one))));
    }

    Handle<Device::RTScene> scene = device->rtNewScene("default");
    g_device->rtSetString(scene,"accel",g_accel.c_str());
    g_device->rtSetString(scene,"builder",g_builder.c_str());
    g_device->rtSetString(scene,"traverser",g_traverser.c_str());
    for (size_t i=0; i<prims.size(); i++) g_device->rtSetPrimitive(scene,i,prims[i]);
    g_device->rtCommit(scene);
    
    for (size_t i=0; i<prims.size(); i++)
      device->rtDecRef(prims[i]);

    return scene;
  }