29 #if (PLATFORM_USE_OSPRAY)
37 {ENGINE_OPTIX_6,
"OptiX6Engine"}};
44 , _parametersManager{parametersManager}
55 const auto libraryName = (*it).second;
56 if (_engines.count(libraryName) == 0)
57 return _loadEngine(libraryName.c_str(), _argc, _argv);
58 return _engines[libraryName].get();
61 Engine* EngineFactory::_loadEngine(
const std::string& name,
int argc,
const char* argv[])
66 auto createSym = library.getSymbolAddress(
"core_engine_create");
69 throw std::runtime_error(std::string(
"Plugin '") + name +
"' is not a valid Core engine; missing " +
70 "core_engine_create()");
74 if (
auto plugin = createFunc(argc, argv, _parametersManager))
76 _engines.emplace(name, std::unique_ptr<Engine>(plugin));
77 _libs.push_back(std::move(library));
78 CORE_INFO(
"Loaded engine '" << name <<
"'");
82 catch (
const std::runtime_error& exc)
84 CORE_ERROR(
"Failed to load engine " << std::quoted(name) <<
": " << exc.what());
EngineFactory(int argc, const char **argv, ParametersManager ¶metersManager)
Constructor.
Engine * create(const std::string &name)
Create an instance of the engine corresponding the given name. If the name is incorrect,...
Provides an abstract implementation of a ray-tracing engine.
std::map< std::string, std::string > SUPPORTED_ENGINES
Engine *(* CreateFuncType)(int, const char **, ParametersManager &)