Spaces:
Build error
Build error
/* | |
* SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. | |
* SPDX-License-Identifier: Apache-2.0 | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
*/ | |
/** @file main.cu | |
* @author Thomas Müller, NVIDIA | |
*/ | |
using namespace args; | |
using namespace ngp; | |
using namespace std; | |
namespace ngp { | |
int main_func(const std::vector<std::string>& arguments) { | |
ArgumentParser parser{ | |
"Gen3C GUI" | |
"Version " NGP_VERSION, | |
"", | |
}; | |
HelpFlag help_flag{ | |
parser, | |
"HELP", | |
"Display this help menu.", | |
{'h', "help"}, | |
}; | |
Flag vr_flag{parser, "VR", "Enables VR", {"vr"}}; | |
ValueFlag<string> snapshot_flag{ | |
parser, | |
"SNAPSHOT", | |
"Optional snapshot to load upon startup.", | |
{"snapshot", "load_snapshot"}, | |
}; | |
ValueFlag<uint32_t> width_flag{ | |
parser, | |
"WIDTH", | |
"Resolution width of the GUI.", | |
{"width"}, | |
}; | |
ValueFlag<uint32_t> height_flag{ | |
parser, | |
"HEIGHT", | |
"Resolution height of the GUI.", | |
{"height"}, | |
}; | |
Flag version_flag{ | |
parser, | |
"VERSION", | |
"Display the version of Gen3C GUI.", | |
{'v', "version"}, | |
}; | |
PositionalList<string> files{ | |
parser, | |
"files", | |
"Files to be loaded. Can be a scene, network config, snapshot, camera path, or a combination of those.", | |
}; | |
// Parse command line arguments and react to parsing | |
// errors using exceptions. | |
try { | |
if (arguments.empty()) { | |
tlog::error() << "Number of arguments must be bigger than 0."; | |
return -3; | |
} | |
parser.Prog(arguments.front()); | |
parser.ParseArgs(begin(arguments) + 1, end(arguments)); | |
} catch (const Help&) { | |
cout << parser; | |
return 0; | |
} catch (const ParseError& e) { | |
cerr << e.what() << endl; | |
cerr << parser; | |
return -1; | |
} catch (const ValidationError& e) { | |
cerr << e.what() << endl; | |
cerr << parser; | |
return -2; | |
} | |
if (version_flag) { | |
tlog::none() << "Gen3C GUI v" NGP_VERSION; | |
return 0; | |
} | |
Testbed testbed{ETestbedMode::Gen3c}; | |
for (auto file : get(files)) { | |
testbed.load_file(file); | |
} | |
bool gui = true; | |
bool gui = false; | |
if (gui) { | |
testbed.init_window(width_flag ? get(width_flag) : 1920, height_flag ? get(height_flag) : 1080); | |
} | |
if (vr_flag) { | |
testbed.init_vr(); | |
} | |
// Render loop | |
while (testbed.frame()) {} | |
return 0; | |
} | |
} // namespace ngp | |
int wmain(int argc, wchar_t* argv[]) { | |
SetConsoleOutputCP(CP_UTF8); | |
int main(int argc, char* argv[]) { | |
try { | |
std::vector<std::string> arguments; | |
for (int i = 0; i < argc; ++i) { | |
arguments.emplace_back(ngp::utf16_to_utf8(argv[i])); | |
arguments.emplace_back(argv[i]); | |
} | |
return ngp::main_func(arguments); | |
} catch (const exception& e) { | |
tlog::error() << fmt::format("Uncaught exception: {}", e.what()); | |
return 1; | |
} | |
} | |