Add common CLI Args parser for the samples (#8819)
This commit is contained in:
@@ -7,3 +7,5 @@ We are chaning the way Vulkan buffers are handled. We need to switch over to a m
|
||||
appropriate header in [RELEASE_NOTES.md](./RELEASE_NOTES.md).
|
||||
|
||||
## Release notes for next branch cut
|
||||
|
||||
- samples: samples now have a CLI to select backend api
|
||||
@@ -216,6 +216,21 @@ endif()
|
||||
|
||||
target_sources(gltf-demo-resources PRIVATE ${RESGEN_SOURCE})
|
||||
|
||||
# ==================================================================================================
|
||||
# Common Sample Utilities
|
||||
# ==================================================================================================
|
||||
|
||||
add_library(samples-common STATIC
|
||||
common/arguments.cpp
|
||||
)
|
||||
|
||||
target_include_directories(samples-common PRIVATE
|
||||
${ROOT_DIR}/third_party/getopt/include
|
||||
)
|
||||
target_link_libraries(samples-common filament)
|
||||
|
||||
set_target_properties(samples-common PROPERTIES FOLDER Samples/Common)
|
||||
|
||||
# ==================================================================================================
|
||||
# Compiler flags
|
||||
# ==================================================================================================
|
||||
@@ -234,7 +249,7 @@ endif()
|
||||
function(add_demo NAME)
|
||||
include_directories(${GENERATION_ROOT})
|
||||
add_executable(${NAME} ${NAME}.cpp)
|
||||
target_link_libraries(${NAME} PRIVATE sample-resources filamentapp)
|
||||
target_link_libraries(${NAME} PRIVATE sample-resources filamentapp samples-common)
|
||||
target_compile_options(${NAME} PRIVATE ${COMPILER_FLAGS})
|
||||
set_target_properties(${NAME} PROPERTIES FOLDER Samples)
|
||||
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "common/arguments.h"
|
||||
|
||||
#include <filament/Camera.h>
|
||||
#include <filament/Engine.h>
|
||||
#include <filament/IndexBuffer.h>
|
||||
@@ -65,6 +67,7 @@ static constexpr uint16_t TRIANGLE_INDICES[3] = { 0, 1, 2 };
|
||||
int main(int argc, char** argv) {
|
||||
Config config;
|
||||
config.title = "animation";
|
||||
config.backend = samples::parseArgumentsForBackend(argc, argv);
|
||||
|
||||
App app;
|
||||
auto setup = [&app](Engine* engine, View* view, Scene* scene) {
|
||||
|
||||
97
samples/common/arguments.cpp
Normal file
97
samples/common/arguments.cpp
Normal file
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
* Copyright (C) 2025 The Android Open Source Project
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include <filament/Engine.h>
|
||||
|
||||
#include <utils/Path.h>
|
||||
|
||||
#include <getopt/getopt.h>
|
||||
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
namespace samples {
|
||||
|
||||
std::string getBackendAPIArgumentsUsage() {
|
||||
return " --api, -a\n"
|
||||
" Specify the backend API: opengl, vulkan, metal, or webgpu\n\n";
|
||||
}
|
||||
|
||||
static void printUsage(char* name) {
|
||||
std::string exec_name(utils::Path(name).getName());
|
||||
std::string usage("EXEC_NAME\n"
|
||||
"Usage:\n"
|
||||
" EXEC_NAME [options]\n"
|
||||
"Options:\n"
|
||||
" --help, -h\n"
|
||||
" Prints this message\n\n"
|
||||
"API_USAGE");
|
||||
const std::string from("EXEC_NAME");
|
||||
for (size_t pos = usage.find(from); pos != std::string::npos; pos = usage.find(from, pos)) {
|
||||
usage.replace(pos, from.length(), exec_name);
|
||||
}
|
||||
const std::string apiUsage("API_USAGE");
|
||||
for (size_t pos = usage.find(apiUsage); pos != std::string::npos;
|
||||
pos = usage.find(apiUsage, pos)) {
|
||||
usage.replace(pos, apiUsage.length(), getBackendAPIArgumentsUsage());
|
||||
}
|
||||
std::cout << usage;
|
||||
}
|
||||
|
||||
filament::Engine::Backend parseArgumentsForBackend(const std::string& backend) {
|
||||
if (backend == "metal") {
|
||||
return filament::Engine::Backend::METAL;
|
||||
} else if (backend == "opengl") {
|
||||
return filament::Engine::Backend::OPENGL;
|
||||
} else if (backend == "vulkan") {
|
||||
return filament::Engine::Backend::VULKAN;
|
||||
} else if (backend == "webgpu") {
|
||||
return filament::Engine::Backend::WEBGPU;
|
||||
} else {
|
||||
std::cerr << "Unrecognized target API. Must be 'opengl'|'vulkan'|'metal'|'webgpu'."
|
||||
<< std::endl;
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
filament::Engine::Backend parseArgumentsForBackend(int argc, char* argv[]) {
|
||||
// The first colon in OPTSTR turns on silent error reporting. This is important, as the
|
||||
// arguments may also contain gtest parameters we don't know about.
|
||||
static constexpr const char* OPTSTR = "ha:";
|
||||
static const struct option OPTIONS[] = {
|
||||
{ "help", no_argument, nullptr, 'h' },
|
||||
{ "api", required_argument, nullptr, 'a' },
|
||||
{ nullptr, 0, nullptr, 0 }
|
||||
};
|
||||
int opt;
|
||||
int optionIndex = 0;
|
||||
|
||||
while ((opt = getopt_long(argc, argv, OPTSTR, OPTIONS, &optionIndex)) >= 0) {
|
||||
std::string arg(optarg ? optarg : "");
|
||||
switch (opt) {
|
||||
default:
|
||||
case 'h':
|
||||
printUsage(argv[0]);
|
||||
exit(0);
|
||||
case 'a':
|
||||
return parseArgumentsForBackend(arg);
|
||||
}
|
||||
}
|
||||
// if no args were provided return DEFAULT
|
||||
return filament::Engine::Backend::DEFAULT;
|
||||
}
|
||||
|
||||
} // namespace samples
|
||||
29
samples/common/arguments.h
Normal file
29
samples/common/arguments.h
Normal file
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
* Copyright (C) 2025 The Android Open Source Project
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef TNT_SAMPLES_ARGUMENTS_H
|
||||
#define TNT_SAMPLES_ARGUMENTS_H
|
||||
|
||||
#include <filament/Engine.h>
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace samples {
|
||||
filament::Engine::Backend parseArgumentsForBackend(int argc, char* argv[]);
|
||||
filament::Engine::Backend parseArgumentsForBackend(const std::string& backend);
|
||||
std::string getBackendAPIArgumentsUsage();
|
||||
}
|
||||
#endif //TNT_SAMPLES_ARGUMENTS_H
|
||||
@@ -14,6 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "common/arguments.h"
|
||||
|
||||
#include <filament/Camera.h>
|
||||
#include <filament/Engine.h>
|
||||
#include <filament/IndexBuffer.h>
|
||||
@@ -69,6 +71,7 @@ static constexpr uint16_t TRIANGLE_INDICES[3] = { 0, 1, 2 };
|
||||
int main(int argc, char** argv) {
|
||||
Config config;
|
||||
config.title = "depthtesting";
|
||||
config.backend = samples::parseArgumentsForBackend(argc, argv);
|
||||
|
||||
App app;
|
||||
auto setup = [&app](Engine* engine, View* view, Scene* scene) {
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "common/arguments.h"
|
||||
|
||||
#include <atomic>
|
||||
#include <fstream>
|
||||
#include <iomanip>
|
||||
@@ -111,8 +113,7 @@ static void printUsage(char* name) {
|
||||
"Options:\n"
|
||||
" --help, -h\n"
|
||||
" Prints this message\n\n"
|
||||
" --api, -a\n"
|
||||
" Specify the backend API: opengl (default) or vulkan\n\n"
|
||||
"API_USAGE"
|
||||
" --ibl=<path to cmgen IBL>, -i <path>\n"
|
||||
" Applies an IBL generated by cmgen's deploy option\n\n"
|
||||
" --scale=[number], -s [number]\n"
|
||||
@@ -137,6 +138,10 @@ static void printUsage(char* name) {
|
||||
for (size_t pos = usage.find(from); pos != std::string::npos; pos = usage.find(from, pos)) {
|
||||
usage.replace(pos, from.length(), exec_name);
|
||||
}
|
||||
const std::string apiUsage("API_USAGE");
|
||||
for (size_t pos = usage.find(apiUsage); pos != std::string::npos; pos = usage.find(apiUsage, pos)) {
|
||||
usage.replace(pos, apiUsage.length(), samples::getBackendAPIArgumentsUsage());
|
||||
}
|
||||
std::cout << usage;
|
||||
}
|
||||
|
||||
@@ -166,13 +171,7 @@ static int handleCommandLineArgments(int argc, char* argv[], Config* config) {
|
||||
printUsage(argv[0]);
|
||||
exit(0);
|
||||
case 'a':
|
||||
if (arg == "opengl") {
|
||||
config->backend = Engine::Backend::OPENGL;
|
||||
} else if (arg == "vulkan") {
|
||||
config->backend = Engine::Backend::VULKAN;
|
||||
} else {
|
||||
std::cerr << "Unrecognized backend. Must be 'opengl'|'vulkan'." << std::endl;
|
||||
}
|
||||
config->backend = samples::parseArgumentsForBackend(arg);
|
||||
break;
|
||||
case 'i':
|
||||
config->iblDirectory = arg;
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "common/arguments.h"
|
||||
|
||||
#include <filamentapp/Config.h>
|
||||
#include <filamentapp/FilamentApp.h>
|
||||
#include <filamentapp/IBL.h>
|
||||
@@ -85,8 +87,7 @@ static void printUsage(char* name) {
|
||||
"Options:\n"
|
||||
" --help, -h\n"
|
||||
" Prints this message\n\n"
|
||||
" --api, -a\n"
|
||||
" Specify the backend API: opengl (default), vulkan, or metal\n\n"
|
||||
"API_USAGE"
|
||||
" --ibl=<path to cmgen IBL>, -i <path>\n"
|
||||
" Override the built-in IBL\n\n"
|
||||
" --num=<number of initial instances>, -n <num>\n"
|
||||
@@ -100,6 +101,10 @@ static void printUsage(char* name) {
|
||||
for (size_t pos = usage.find(from); pos != std::string::npos; pos = usage.find(from, pos)) {
|
||||
usage.replace(pos, from.length(), exec_name);
|
||||
}
|
||||
const std::string apiUsage("API_USAGE");
|
||||
for (size_t pos = usage.find(apiUsage); pos != std::string::npos; pos = usage.find(apiUsage, pos)) {
|
||||
usage.replace(pos, apiUsage.length(), samples::getBackendAPIArgumentsUsage());
|
||||
}
|
||||
std::cout << usage;
|
||||
}
|
||||
|
||||
@@ -124,15 +129,7 @@ static int handleCommandLineArguments(int argc, char* argv[], App* app) {
|
||||
printUsage(argv[0]);
|
||||
exit(0);
|
||||
case 'a':
|
||||
if (arg == "opengl") {
|
||||
app->config.backend = Engine::Backend::OPENGL;
|
||||
} else if (arg == "vulkan") {
|
||||
app->config.backend = Engine::Backend::VULKAN;
|
||||
} else if (arg == "metal") {
|
||||
app->config.backend = Engine::Backend::METAL;
|
||||
} else {
|
||||
std::cerr << "Unrecognized backend. Must be 'opengl'|'vulkan'|'metal'.\n";
|
||||
}
|
||||
app->config.backend = samples::parseArgumentsForBackend(arg);
|
||||
break;
|
||||
case 'm':
|
||||
app->instanceToAnimate = atoi(arg.c_str());
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "common/arguments.h"
|
||||
|
||||
#include <filamentapp/Config.h>
|
||||
#include <filamentapp/FilamentApp.h>
|
||||
#include <filamentapp/IBL.h>
|
||||
@@ -155,19 +157,7 @@ static void printUsage(char* name) {
|
||||
"Options:\n"
|
||||
" --help, -h\n"
|
||||
" Prints this message\n\n"
|
||||
" --api, -a\n"
|
||||
" Specify the backend API: "
|
||||
|
||||
// Matches logic in filament/backend/src/PlatformFactory.cpp for Backend::DEFAULT
|
||||
#if defined(FILAMENT_IOS) || defined(__APPLE__)
|
||||
"opengl, vulkan, or metal (default)"
|
||||
#elif defined(FILAMENT_DRIVER_SUPPORTS_VULKAN)
|
||||
"opengl, vulkan (default), or metal"
|
||||
#else
|
||||
"opengl (default), vulkan, or metal"
|
||||
#endif
|
||||
"\n\n"
|
||||
|
||||
"API_USAGE"
|
||||
" --feature-level=<1|2|3>, -f <1|2|3>\n"
|
||||
" Specify the feature level to use. The default is the highest supported feature level.\n\n"
|
||||
" --batch=<path to JSON file or 'default'>, -b\n"
|
||||
@@ -211,6 +201,10 @@ static void printUsage(char* name) {
|
||||
for (size_t pos = usage.find(from); pos != std::string::npos; pos = usage.find(from, pos)) {
|
||||
usage.replace(pos, from.length(), exec_name);
|
||||
}
|
||||
const std::string apiUsage("API_USAGE");
|
||||
for (size_t pos = usage.find(apiUsage); pos != std::string::npos; pos = usage.find(apiUsage, pos)) {
|
||||
usage.replace(pos, apiUsage.length(), samples::getBackendAPIArgumentsUsage());
|
||||
}
|
||||
std::cout << usage;
|
||||
}
|
||||
|
||||
@@ -249,15 +243,7 @@ static int handleCommandLineArguments(int argc, char* argv[], App* app) {
|
||||
printUsage(argv[0]);
|
||||
exit(0);
|
||||
case 'a':
|
||||
if (arg == "opengl") {
|
||||
app->config.backend = Engine::Backend::OPENGL;
|
||||
} else if (arg == "vulkan") {
|
||||
app->config.backend = Engine::Backend::VULKAN;
|
||||
} else if (arg == "metal") {
|
||||
app->config.backend = Engine::Backend::METAL;
|
||||
} else {
|
||||
std::cerr << "Unrecognized backend. Must be 'opengl'|'vulkan'|'metal'.\n";
|
||||
}
|
||||
app->config.backend = samples::parseArgumentsForBackend(arg);
|
||||
break;
|
||||
case 'f':
|
||||
if (arg == "1") {
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "common/arguments.h"
|
||||
|
||||
#include <filament/Engine.h>
|
||||
#include <filament/IndexBuffer.h>
|
||||
#include <filament/LightManager.h>
|
||||
@@ -106,13 +108,16 @@ static void printUsage(char* name) {
|
||||
"Options:\n"
|
||||
" --help, -h\n"
|
||||
" Prints this message\n\n"
|
||||
" --api, -a\n"
|
||||
" Specify the backend API: opengl (default), vulkan, or metal\n\n"
|
||||
"API_USAGE"
|
||||
);
|
||||
const std::string from("HEIGHTFIELD");
|
||||
for (size_t pos = usage.find(from); pos != std::string::npos; pos = usage.find(from, pos)) {
|
||||
usage.replace(pos, from.length(), exec_name);
|
||||
}
|
||||
const std::string apiUsage("API_USAGE");
|
||||
for (size_t pos = usage.find(apiUsage); pos != std::string::npos; pos = usage.find(apiUsage, pos)) {
|
||||
usage.replace(pos, apiUsage.length(), samples::getBackendAPIArgumentsUsage());
|
||||
}
|
||||
std::cout << usage;
|
||||
}
|
||||
|
||||
@@ -133,16 +138,7 @@ static int handleCommandLineArgments(int argc, char* argv[], Config* config) {
|
||||
printUsage(argv[0]);
|
||||
exit(0);
|
||||
case 'a':
|
||||
if (arg == "opengl") {
|
||||
config->backend = Engine::Backend::OPENGL;
|
||||
} else if (arg == "vulkan") {
|
||||
config->backend = Engine::Backend::VULKAN;
|
||||
} else if (arg == "metal") {
|
||||
config->backend = Engine::Backend::METAL;
|
||||
} else {
|
||||
std::cerr << "Unrecognized backend. Must be 'opengl'|'vulkan'|'metal'."
|
||||
<< std::endl;
|
||||
}
|
||||
config->backend = samples::parseArgumentsForBackend(arg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "common/arguments.h"
|
||||
|
||||
#include <filament/Camera.h>
|
||||
#include <filament/Engine.h>
|
||||
#include <filament/IndexBuffer.h>
|
||||
@@ -96,13 +98,16 @@ static void printUsage(char* name) {
|
||||
"Options:\n"
|
||||
" --help, -h\n"
|
||||
" Prints this message\n\n"
|
||||
" --api, -a\n"
|
||||
" Specify the backend API: opengl (default), vulkan, or metal\n\n"
|
||||
"API_USAGE"
|
||||
);
|
||||
const std::string from("SAMPLE");
|
||||
for (size_t pos = usage.find(from); pos != std::string::npos; pos = usage.find(from, pos)) {
|
||||
usage.replace(pos, from.length(), exec_name);
|
||||
}
|
||||
const std::string apiUsage("API_USAGE");
|
||||
for (size_t pos = usage.find(apiUsage); pos != std::string::npos; pos = usage.find(apiUsage, pos)) {
|
||||
usage.replace(pos, apiUsage.length(), samples::getBackendAPIArgumentsUsage());
|
||||
}
|
||||
std::cout << usage;
|
||||
}
|
||||
|
||||
@@ -123,16 +128,7 @@ static int handleCommandLineArgments(int argc, char* argv[], Config* config) {
|
||||
printUsage(argv[0]);
|
||||
exit(0);
|
||||
case 'a':
|
||||
if (arg == "opengl") {
|
||||
config->backend = Engine::Backend::OPENGL;
|
||||
} else if (arg == "vulkan") {
|
||||
config->backend = Engine::Backend::VULKAN;
|
||||
} else if (arg == "metal") {
|
||||
config->backend = Engine::Backend::METAL;
|
||||
} else {
|
||||
std::cerr << "Unrecognized backend. Must be 'opengl'|'vulkan'|'metal'."
|
||||
<< std::endl;
|
||||
}
|
||||
config->backend = samples::parseArgumentsForBackend(arg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "common/arguments.h"
|
||||
|
||||
#include <filament/Engine.h>
|
||||
#include <filament/LightManager.h>
|
||||
#include <filament/Material.h>
|
||||
@@ -63,14 +65,16 @@ static void printUsage(char* name) {
|
||||
"Options:\n"
|
||||
" --help, -h\n"
|
||||
" Prints this message\n\n"
|
||||
" --api, -a\n"
|
||||
" Specify the backend API: opengl, vulkan, metal, or webgpu\n"
|
||||
" NOTE that webgpu is not yet functional (it is in development).\n"
|
||||
"API_USAGE"
|
||||
);
|
||||
const std::string from("EXEC");
|
||||
for (size_t pos = usage.find(from); pos != std::string::npos; pos = usage.find(from, pos)) {
|
||||
usage.replace(pos, from.length(), exec_name);
|
||||
}
|
||||
const std::string apiUsage("API_USAGE");
|
||||
for (size_t pos = usage.find(apiUsage); pos != std::string::npos; pos = usage.find(apiUsage, pos)) {
|
||||
usage.replace(pos, apiUsage.length(), samples::getBackendAPIArgumentsUsage());
|
||||
}
|
||||
std::cout << usage;
|
||||
}
|
||||
|
||||
@@ -91,19 +95,7 @@ static int handleCommandLineArguments(int argc, char* argv[], App* app) {
|
||||
printUsage(argv[0]);
|
||||
exit(0);
|
||||
case 'a':
|
||||
if (arg == "opengl") {
|
||||
app->config.backend = Engine::Backend::OPENGL;
|
||||
} else if (arg == "vulkan") {
|
||||
app->config.backend = Engine::Backend::VULKAN;
|
||||
} else if (arg == "metal") {
|
||||
app->config.backend = Engine::Backend::METAL;
|
||||
} else if (arg == "webgpu") {
|
||||
app->config.backend = Engine::Backend::WEBGPU;
|
||||
} else {
|
||||
std::cerr << "Unrecognized backend. Must be "
|
||||
"'opengl'|'vulkan'|'metal'|'webgpu'.\n";
|
||||
exit(1);
|
||||
}
|
||||
app->config.backend = samples::parseArgumentsForBackend(arg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "common/arguments.h"
|
||||
|
||||
#include <filament/Camera.h>
|
||||
#include <filament/Engine.h>
|
||||
#include <filament/IndexBuffer.h>
|
||||
@@ -72,13 +74,16 @@ static void printUsage(char* name) {
|
||||
"Options:\n"
|
||||
" --help, -h\n"
|
||||
" Prints this message\n\n"
|
||||
" --api, -a\n"
|
||||
" Specify the backend API: opengl (default), vulkan, or metal\n\n"
|
||||
"API_USAGE"
|
||||
);
|
||||
const std::string from("SAMPLE");
|
||||
for (size_t pos = usage.find(from); pos != std::string::npos; pos = usage.find(from, pos)) {
|
||||
usage.replace(pos, from.length(), exec_name);
|
||||
}
|
||||
const std::string apiUsage("API_USAGE");
|
||||
for (size_t pos = usage.find(apiUsage); pos != std::string::npos; pos = usage.find(apiUsage, pos)) {
|
||||
usage.replace(pos, apiUsage.length(), samples::getBackendAPIArgumentsUsage());
|
||||
}
|
||||
std::cout << usage;
|
||||
}
|
||||
|
||||
@@ -99,16 +104,7 @@ static int handleCommandLineArgments(int argc, char* argv[], Config* config) {
|
||||
printUsage(argv[0]);
|
||||
exit(0);
|
||||
case 'a':
|
||||
if (arg == "opengl") {
|
||||
config->backend = Engine::Backend::OPENGL;
|
||||
} else if (arg == "vulkan") {
|
||||
config->backend = Engine::Backend::VULKAN;
|
||||
} else if (arg == "metal") {
|
||||
config->backend = Engine::Backend::METAL;
|
||||
} else {
|
||||
std::cerr << "Unrecognized backend. Must be 'opengl'|'vulkan'|'metal'."
|
||||
<< std::endl;
|
||||
}
|
||||
config->backend = samples::parseArgumentsForBackend(arg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "common/arguments.h"
|
||||
|
||||
#include <filament/Camera.h>
|
||||
#include <filament/Engine.h>
|
||||
#include <filament/IndexBuffer.h>
|
||||
@@ -99,13 +101,16 @@ static void printUsage(char* name) {
|
||||
"Options:\n"
|
||||
" --help, -h\n"
|
||||
" Prints this message\n\n"
|
||||
" --api, -a\n"
|
||||
" Specify the backend API: opengl (default), vulkan, or metal\n\n"
|
||||
"API_USAGE"
|
||||
);
|
||||
const std::string from("SAMPLE");
|
||||
for (size_t pos = usage.find(from); pos != std::string::npos; pos = usage.find(from, pos)) {
|
||||
usage.replace(pos, from.length(), exec_name);
|
||||
}
|
||||
const std::string apiUsage("API_USAGE");
|
||||
for (size_t pos = usage.find(apiUsage); pos != std::string::npos; pos = usage.find(apiUsage, pos)) {
|
||||
usage.replace(pos, apiUsage.length(), samples::getBackendAPIArgumentsUsage());
|
||||
}
|
||||
std::cout << usage;
|
||||
}
|
||||
|
||||
@@ -126,16 +131,7 @@ static int handleCommandLineArgments(int argc, char* argv[], Config* config) {
|
||||
printUsage(argv[0]);
|
||||
exit(0);
|
||||
case 'a':
|
||||
if (arg == "opengl") {
|
||||
config->backend = Engine::Backend::OPENGL;
|
||||
} else if (arg == "vulkan") {
|
||||
config->backend = Engine::Backend::VULKAN;
|
||||
} else if (arg == "metal") {
|
||||
config->backend = Engine::Backend::METAL;
|
||||
} else {
|
||||
std::cerr << "Unrecognized backend. Must be 'opengl'|'vulkan'|'metal'."
|
||||
<< std::endl;
|
||||
}
|
||||
config->backend = samples::parseArgumentsForBackend(arg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "common/arguments.h"
|
||||
|
||||
#include <filament/Camera.h>
|
||||
#include <filament/Engine.h>
|
||||
#include <filament/IndexBuffer.h>
|
||||
@@ -91,13 +93,16 @@ static void printUsage(char* name) {
|
||||
"Options:\n"
|
||||
" --help, -h\n"
|
||||
" Prints this message\n\n"
|
||||
" --api, -a\n"
|
||||
" Specify the backend API: opengl (default), vulkan, or metal\n\n"
|
||||
"API_USAGE"
|
||||
);
|
||||
const std::string from("SAMPLE");
|
||||
for (size_t pos = usage.find(from); pos != std::string::npos; pos = usage.find(from, pos)) {
|
||||
usage.replace(pos, from.length(), exec_name);
|
||||
}
|
||||
const std::string apiUsage("API_USAGE");
|
||||
for (size_t pos = usage.find(apiUsage); pos != std::string::npos; pos = usage.find(apiUsage, pos)) {
|
||||
usage.replace(pos, apiUsage.length(), samples::getBackendAPIArgumentsUsage());
|
||||
}
|
||||
std::cout << usage;
|
||||
}
|
||||
|
||||
@@ -118,16 +123,7 @@ static int handleCommandLineArgments(int argc, char* argv[], Config* config) {
|
||||
printUsage(argv[0]);
|
||||
exit(0);
|
||||
case 'a':
|
||||
if (arg == "opengl") {
|
||||
config->backend = Engine::Backend::OPENGL;
|
||||
} else if (arg == "vulkan") {
|
||||
config->backend = Engine::Backend::VULKAN;
|
||||
} else if (arg == "metal") {
|
||||
config->backend = Engine::Backend::METAL;
|
||||
} else {
|
||||
std::cerr << "Unrecognized backend. Must be 'opengl'|'vulkan'|'metal'."
|
||||
<< std::endl;
|
||||
}
|
||||
config->backend = samples::parseArgumentsForBackend(arg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "common/arguments.h"
|
||||
|
||||
#include <filament/Camera.h>
|
||||
#include <filament/Engine.h>
|
||||
#include <filament/IndexBuffer.h>
|
||||
@@ -86,8 +88,7 @@ static void printUsage(char* name) {
|
||||
"Options:\n"
|
||||
" --help, -h\n"
|
||||
" Prints this message\n\n"
|
||||
" --api, -a\n"
|
||||
" Specify the backend API: opengl (default), vulkan, or metal\n"
|
||||
"API_USAGE"
|
||||
" --eyes=<stereoscopic eyes>, -y <stereoscopic eyes>\n"
|
||||
" Sets the number of stereoscopic eyes (default: 2) when stereoscopic rendering is\n"
|
||||
" enabled.\n"
|
||||
@@ -98,6 +99,10 @@ static void printUsage(char* name) {
|
||||
for (size_t pos = usage.find(from); pos != std::string::npos; pos = usage.find(from, pos)) {
|
||||
usage.replace(pos, from.length(), exec_name);
|
||||
}
|
||||
const std::string apiUsage("API_USAGE");
|
||||
for (size_t pos = usage.find(apiUsage); pos != std::string::npos; pos = usage.find(apiUsage, pos)) {
|
||||
usage.replace(pos, apiUsage.length(), samples::getBackendAPIArgumentsUsage());
|
||||
}
|
||||
std::cout << usage;
|
||||
}
|
||||
|
||||
@@ -120,16 +125,7 @@ static int handleCommandLineArguments(int argc, char* argv[], App* app) {
|
||||
printUsage(argv[0]);
|
||||
exit(0);
|
||||
case 'a':
|
||||
if (arg == "opengl") {
|
||||
app->config.backend = Engine::Backend::OPENGL;
|
||||
} else if (arg == "vulkan") {
|
||||
app->config.backend = Engine::Backend::VULKAN;
|
||||
} else if (arg == "metal") {
|
||||
app->config.backend = Engine::Backend::METAL;
|
||||
} else {
|
||||
std::cerr << "Unrecognized backend. Must be 'opengl'|'vulkan'|'metal'.\n";
|
||||
exit(1);
|
||||
}
|
||||
app->config.backend = samples::parseArgumentsForBackend(arg);
|
||||
break;
|
||||
case 'y': {
|
||||
int eyeCount = 0;
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "common/arguments.h"
|
||||
|
||||
#include <filament/Camera.h>
|
||||
#include <filament/Engine.h>
|
||||
#include <filament/IndexBuffer.h>
|
||||
@@ -77,13 +79,16 @@ static void printUsage(char* name) {
|
||||
"Options:\n"
|
||||
" --help, -h\n"
|
||||
" Prints this message\n\n"
|
||||
" --api, -a\n"
|
||||
" Specify the backend API: opengl, vulkan, metal, or webgpu\n"
|
||||
"API_USAGE"
|
||||
);
|
||||
const std::string from("HELLOTRIANGLE");
|
||||
for (size_t pos = usage.find(from); pos != std::string::npos; pos = usage.find(from, pos)) {
|
||||
usage.replace(pos, from.length(), exec_name);
|
||||
}
|
||||
const std::string apiUsage("API_USAGE");
|
||||
for (size_t pos = usage.find(apiUsage); pos != std::string::npos; pos = usage.find(apiUsage, pos)) {
|
||||
usage.replace(pos, apiUsage.length(), samples::getBackendAPIArgumentsUsage());
|
||||
}
|
||||
std::cout << usage;
|
||||
}
|
||||
|
||||
@@ -104,19 +109,7 @@ static int handleCommandLineArguments(int argc, char* argv[], App* app) {
|
||||
printUsage(argv[0]);
|
||||
exit(0);
|
||||
case 'a':
|
||||
if (arg == "opengl") {
|
||||
app->config.backend = Engine::Backend::OPENGL;
|
||||
} else if (arg == "vulkan") {
|
||||
app->config.backend = Engine::Backend::VULKAN;
|
||||
} else if (arg == "metal") {
|
||||
app->config.backend = Engine::Backend::METAL;
|
||||
} else if (arg == "webgpu") {
|
||||
app->config.backend = Engine::Backend::WEBGPU;
|
||||
} else {
|
||||
std::cerr << "Unrecognized backend. Must be "
|
||||
"'opengl'|'vulkan'|'metal'|'webgpu'.\n";
|
||||
exit(1);
|
||||
}
|
||||
app->config.backend = samples::parseArgumentsForBackend(arg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "common/arguments.h"
|
||||
|
||||
#include <filamentapp/Config.h>
|
||||
#include <filamentapp/FilamentApp.h>
|
||||
|
||||
@@ -94,8 +96,7 @@ static void printUsage(char* name) {
|
||||
"Options:\n"
|
||||
" --help, -h\n"
|
||||
" Prints this message\n\n"
|
||||
" --api, -a\n"
|
||||
" Specify the backend API: opengl (default), vulkan, or metal\n\n"
|
||||
"API_USAGE"
|
||||
" --camera=<camera mode>, -c <camera mode>\n"
|
||||
" Set the camera mode: orbit (default) or flight\n"
|
||||
" Flight mode uses the following controls:\n"
|
||||
@@ -109,6 +110,10 @@ static void printUsage(char* name) {
|
||||
for (size_t pos = usage.find(from); pos != std::string::npos; pos = usage.find(from, pos)) {
|
||||
usage.replace(pos, from.length(), exec_name);
|
||||
}
|
||||
const std::string apiUsage("API_USAGE");
|
||||
for (size_t pos = usage.find(apiUsage); pos != std::string::npos; pos = usage.find(apiUsage, pos)) {
|
||||
usage.replace(pos, apiUsage.length(), samples::getBackendAPIArgumentsUsage());
|
||||
}
|
||||
std::cout << usage;
|
||||
}
|
||||
|
||||
@@ -130,15 +135,7 @@ static int handleCommandLineArguments(int argc, char* argv[], App* app) {
|
||||
printUsage(argv[0]);
|
||||
exit(0);
|
||||
case 'a':
|
||||
if (arg == "opengl") {
|
||||
app->config.backend = Engine::Backend::OPENGL;
|
||||
} else if (arg == "vulkan") {
|
||||
app->config.backend = Engine::Backend::VULKAN;
|
||||
} else if (arg == "metal") {
|
||||
app->config.backend = Engine::Backend::METAL;
|
||||
} else {
|
||||
std::cerr << "Unrecognized backend. Must be 'opengl'|'vulkan'|'metal'.\n";
|
||||
}
|
||||
app->config.backend = samples::parseArgumentsForBackend(arg);
|
||||
break;
|
||||
case 'c':
|
||||
if (arg == "flight") {
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "common/arguments.h"
|
||||
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <map>
|
||||
@@ -80,8 +82,7 @@ static void printUsage(char* name) {
|
||||
"Options:\n"
|
||||
" --help, -h\n"
|
||||
" Prints this message\n\n"
|
||||
" --api, -a\n"
|
||||
" Specify the backend API: opengl (default), vulkan, or metal\n\n"
|
||||
"API_USAGE"
|
||||
" --ibl=<path>, -i <path>\n"
|
||||
" Applies an IBL\n\n"
|
||||
" path can either be a directory containing IBL data files generated by cmgen,\n"
|
||||
@@ -101,6 +102,10 @@ static void printUsage(char* name) {
|
||||
for (size_t pos = usage.find(from); pos != std::string::npos; pos = usage.find(from, pos)) {
|
||||
usage.replace(pos, from.length(), exec_name);
|
||||
}
|
||||
const std::string apiUsage("API_USAGE");
|
||||
for (size_t pos = usage.find(apiUsage); pos != std::string::npos; pos = usage.find(apiUsage, pos)) {
|
||||
usage.replace(pos, apiUsage.length(), samples::getBackendAPIArgumentsUsage());
|
||||
}
|
||||
std::cout << usage;
|
||||
}
|
||||
|
||||
@@ -128,15 +133,7 @@ static int handleCommandLineArgments(int argc, char* argv[], Config* config) {
|
||||
printUsage(argv[0]);
|
||||
exit(0);
|
||||
case 'a':
|
||||
if (arg == "opengl") {
|
||||
config->backend = Engine::Backend::OPENGL;
|
||||
} else if (arg == "vulkan") {
|
||||
config->backend = Engine::Backend::VULKAN;
|
||||
} else if (arg == "metal") {
|
||||
config->backend = Engine::Backend::METAL;
|
||||
} else {
|
||||
std::cerr << "Unrecognized backend. Must be 'opengl'|'vulkan'|'metal'." << std::endl;
|
||||
}
|
||||
config->backend = samples::parseArgumentsForBackend(arg);
|
||||
break;
|
||||
case 'i':
|
||||
config->iblDirectory = arg;
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "common/arguments.h"
|
||||
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <map>
|
||||
@@ -88,8 +90,7 @@ static void printUsage(char* name) {
|
||||
"Options:\n"
|
||||
" --help, -h\n"
|
||||
" Prints this message\n\n"
|
||||
" --api, -a\n"
|
||||
" Specify the backend API: opengl (default), vulkan, or metal\n\n"
|
||||
"API_USAGE"
|
||||
" --ibl=<path>, -i <path>\n"
|
||||
" Applies an IBL\n\n"
|
||||
" path can either be a directory containing IBL data files generated by cmgen,\n"
|
||||
@@ -117,6 +118,10 @@ static void printUsage(char* name) {
|
||||
for (size_t pos = usage.find(from); pos != std::string::npos; pos = usage.find(from, pos)) {
|
||||
usage.replace(pos, from.length(), exec_name);
|
||||
}
|
||||
const std::string apiUsage("API_USAGE");
|
||||
for (size_t pos = usage.find(apiUsage); pos != std::string::npos; pos = usage.find(apiUsage, pos)) {
|
||||
usage.replace(pos, apiUsage.length(), samples::getBackendAPIArgumentsUsage());
|
||||
}
|
||||
std::cout << usage;
|
||||
}
|
||||
|
||||
@@ -144,15 +149,7 @@ static int handleCommandLineArgments(int argc, char* argv[], Config* config) {
|
||||
printUsage(argv[0]);
|
||||
exit(0);
|
||||
case 'a':
|
||||
if (arg == "opengl") {
|
||||
config->backend = Engine::Backend::OPENGL;
|
||||
} else if (arg == "vulkan") {
|
||||
config->backend = Engine::Backend::VULKAN;
|
||||
} else if (arg == "metal") {
|
||||
config->backend = Engine::Backend::METAL;
|
||||
} else {
|
||||
std::cerr << "Unrecognized backend. Must be 'opengl'|'vulkan'|'metal'." << std::endl;
|
||||
}
|
||||
config->backend = samples::parseArgumentsForBackend(arg);
|
||||
break;
|
||||
case 'c':
|
||||
if (arg == "flight") {
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "common/arguments.h"
|
||||
|
||||
#include <SDL.h>
|
||||
|
||||
#include <filament/Camera.h>
|
||||
@@ -45,7 +47,7 @@
|
||||
using namespace filament;
|
||||
|
||||
namespace {
|
||||
static constexpr Engine::Backend kBackend = Engine::Backend::OPENGL;
|
||||
Engine::Backend kBackend = Engine::Backend::NOOP;
|
||||
static constexpr int kWidth = 640;
|
||||
static constexpr int kHeight = 480;
|
||||
static constexpr double kFieldOfViewDeg = 60.0;
|
||||
@@ -94,6 +96,7 @@ int main(int argc, char *argv[]) {
|
||||
// ---- initialize ----
|
||||
FILAMENT_CHECK_POSTCONDITION(SDL_Init(SDL_INIT_EVENTS) == 0) << "SDL_Init Failure";
|
||||
|
||||
kBackend = samples::parseArgumentsForBackend(argc, argv);
|
||||
std::vector<Window> windows = { Window(), Window() };
|
||||
uint32_t windowFlags = SDL_WINDOW_SHOWN | SDL_WINDOW_ALLOW_HIGHDPI
|
||||
| SDL_WINDOW_RESIZABLE;
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "common/arguments.h"
|
||||
|
||||
#include <filament/Camera.h>
|
||||
#include <filament/Engine.h>
|
||||
#include <filament/IndexBuffer.h>
|
||||
@@ -189,6 +191,7 @@ void animate(App& app, Engine* engine, View* view, double now) {
|
||||
int main(int argc, char** argv) {
|
||||
Config config;
|
||||
config.title = "point_sprites";
|
||||
config.backend = samples::parseArgumentsForBackend(argc, argv);
|
||||
|
||||
App app;
|
||||
FilamentApp::get().animate([&app](Engine* e, View* v, double now) { animate(app, e, v, now); });
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "common/arguments.h"
|
||||
|
||||
#include <filament/Camera.h>
|
||||
#include <filament/Engine.h>
|
||||
#include <filament/IndexBuffer.h>
|
||||
@@ -130,8 +132,7 @@ static void printUsage(char* name) {
|
||||
"Options:\n"
|
||||
" --help, -h\n"
|
||||
" Prints this message\n\n"
|
||||
" --api, -a\n"
|
||||
" Specify the backend API: opengl (default), vulkan, or metal\n"
|
||||
"API_USAGE"
|
||||
" --mode, -m\n"
|
||||
" Specify the reflection mode: camera (default), or renderables\n\n"
|
||||
);
|
||||
@@ -139,6 +140,10 @@ static void printUsage(char* name) {
|
||||
for (size_t pos = usage.find(from); pos != std::string::npos; pos = usage.find(from, pos)) {
|
||||
usage.replace(pos, from.length(), exec_name);
|
||||
}
|
||||
const std::string apiUsage("API_USAGE");
|
||||
for (size_t pos = usage.find(apiUsage); pos != std::string::npos; pos = usage.find(apiUsage, pos)) {
|
||||
usage.replace(pos, apiUsage.length(), samples::getBackendAPIArgumentsUsage());
|
||||
}
|
||||
std::cout << usage;
|
||||
}
|
||||
|
||||
@@ -160,16 +165,7 @@ static int handleCommandLineArguments(int argc, char* argv[], App* app) {
|
||||
printUsage(argv[0]);
|
||||
exit(0);
|
||||
case 'a':
|
||||
if (arg == "opengl") {
|
||||
app->config.backend = Engine::Backend::OPENGL;
|
||||
} else if (arg == "vulkan") {
|
||||
app->config.backend = Engine::Backend::VULKAN;
|
||||
} else if (arg == "metal") {
|
||||
app->config.backend = Engine::Backend::METAL;
|
||||
} else {
|
||||
std::cerr << "Unrecognized backend. Must be 'opengl'|'vulkan'|'metal'.\n";
|
||||
exit(1);
|
||||
}
|
||||
app->config.backend = samples::parseArgumentsForBackend(arg);
|
||||
break;
|
||||
case 'm':
|
||||
if (arg == "camera") {
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "common/arguments.h"
|
||||
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <map>
|
||||
@@ -72,8 +74,7 @@ static void printUsage(char* name) {
|
||||
"Options:\n"
|
||||
" --help, -h\n"
|
||||
" Prints this message\n\n"
|
||||
" --api, -a\n"
|
||||
" Specify the backend API: opengl (default), vulkan, or metal\n\n"
|
||||
"API_USAGE"
|
||||
" --ibl=<path to cmgen IBL>, -i <path>\n"
|
||||
" Applies an IBL generated by cmgen's deploy option\n\n"
|
||||
" --split-view, -v\n"
|
||||
@@ -85,6 +86,10 @@ static void printUsage(char* name) {
|
||||
for (size_t pos = usage.find(from); pos != std::string::npos; pos = usage.find(from, pos)) {
|
||||
usage.replace(pos, from.length(), exec_name);
|
||||
}
|
||||
const std::string apiUsage("API_USAGE");
|
||||
for (size_t pos = usage.find(apiUsage); pos != std::string::npos; pos = usage.find(apiUsage, pos)) {
|
||||
usage.replace(pos, apiUsage.length(), samples::getBackendAPIArgumentsUsage());
|
||||
}
|
||||
std::cout << usage;
|
||||
}
|
||||
|
||||
@@ -108,15 +113,7 @@ static int handleCommandLineArgments(int argc, char* argv[], Config* config) {
|
||||
printUsage(argv[0]);
|
||||
exit(0);
|
||||
case 'a':
|
||||
if (arg == "opengl") {
|
||||
config->backend = Engine::Backend::OPENGL;
|
||||
} else if (arg == "vulkan") {
|
||||
config->backend = Engine::Backend::VULKAN;
|
||||
} else if (arg == "metal") {
|
||||
config->backend = Engine::Backend::METAL;
|
||||
} else {
|
||||
std::cerr << "Unrecognized backend. Must be 'opengl'|'vulkan'|'metal'." << std::endl;
|
||||
}
|
||||
config->backend = samples::parseArgumentsForBackend(arg);
|
||||
break;
|
||||
case 'i':
|
||||
config->iblDirectory = arg;
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "common/arguments.h"
|
||||
|
||||
#include <filamentapp/Config.h>
|
||||
#include <filamentapp/FilamentApp.h>
|
||||
#include <filamentapp/MeshAssimp.h>
|
||||
@@ -102,8 +104,7 @@ static void printUsage(char* name) {
|
||||
"Options:\n"
|
||||
" --help, -h\n"
|
||||
" Prints this message\n\n"
|
||||
" --api, -a\n"
|
||||
" Specify the backend API: opengl (default), vulkan, or metal\n\n"
|
||||
"API_USAGE"
|
||||
" --ibl=<path to cmgen IBL>, -i <path>\n"
|
||||
" Applies an IBL generated by cmgen's deploy option\n\n"
|
||||
" --split-view, -v\n"
|
||||
@@ -130,6 +131,10 @@ static void printUsage(char* name) {
|
||||
for (size_t pos = usage.find(from); pos != std::string::npos; pos = usage.find(from, pos)) {
|
||||
usage.replace(pos, from.length(), exec_name);
|
||||
}
|
||||
const std::string apiUsage("API_USAGE");
|
||||
for (size_t pos = usage.find(apiUsage); pos != std::string::npos; pos = usage.find(apiUsage, pos)) {
|
||||
usage.replace(pos, apiUsage.length(), samples::getBackendAPIArgumentsUsage());
|
||||
}
|
||||
std::cout << usage;
|
||||
}
|
||||
|
||||
@@ -156,15 +161,7 @@ static int handleCommandLineArgments(int argc, char* argv[], Config* config) {
|
||||
printUsage(argv[0]);
|
||||
exit(0);
|
||||
case 'a':
|
||||
if (arg == "opengl") {
|
||||
config->backend = Engine::Backend::OPENGL;
|
||||
} else if (arg == "vulkan") {
|
||||
config->backend = Engine::Backend::VULKAN;
|
||||
} else if (arg == "metal") {
|
||||
config->backend = Engine::Backend::METAL;
|
||||
} else {
|
||||
std::cerr << "Unrecognized backend. Must be 'opengl'|'vulkan'|'metal'." << std::endl;
|
||||
}
|
||||
config->backend = samples::parseArgumentsForBackend(arg);
|
||||
break;
|
||||
case 'i':
|
||||
config->iblDirectory = arg;
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "common/arguments.h"
|
||||
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <map>
|
||||
@@ -78,8 +80,7 @@ static void printUsage(char* name) {
|
||||
"Options:\n"
|
||||
" --help, -h\n"
|
||||
" Prints this message\n\n"
|
||||
" --api, -a\n"
|
||||
" Specify the backend API: opengl (default), vulkan, or metal\n\n"
|
||||
"API_USAGE"
|
||||
" --ibl=<path to cmgen IBL>, -i <path>\n"
|
||||
" Applies an IBL generated by cmgen's deploy option\n\n"
|
||||
" --split-view, -v\n"
|
||||
@@ -97,6 +98,10 @@ static void printUsage(char* name) {
|
||||
for (size_t pos = usage.find(from); pos != std::string::npos; pos = usage.find(from, pos)) {
|
||||
usage.replace(pos, from.length(), exec_name);
|
||||
}
|
||||
const std::string apiUsage("API_USAGE");
|
||||
for (size_t pos = usage.find(apiUsage); pos != std::string::npos; pos = usage.find(apiUsage, pos)) {
|
||||
usage.replace(pos, apiUsage.length(), samples::getBackendAPIArgumentsUsage());
|
||||
}
|
||||
std::cout << usage;
|
||||
}
|
||||
|
||||
@@ -123,15 +128,7 @@ static int handleCommandLineArgments(int argc, char* argv[], Config* config) {
|
||||
printUsage(argv[0]);
|
||||
exit(0);
|
||||
case 'a':
|
||||
if (arg == "opengl") {
|
||||
config->backend = Engine::Backend::OPENGL;
|
||||
} else if (arg == "vulkan") {
|
||||
config->backend = Engine::Backend::VULKAN;
|
||||
} else if (arg == "metal") {
|
||||
config->backend = Engine::Backend::METAL;
|
||||
} else {
|
||||
std::cerr << "Unrecognized backend. Must be 'opengl'|'vulkan'|'metal'." << std::endl;
|
||||
}
|
||||
config->backend = samples::parseArgumentsForBackend(arg);
|
||||
break;
|
||||
case 'i':
|
||||
config->iblDirectory = arg;
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "common/arguments.h"
|
||||
|
||||
#include <filament/Engine.h>
|
||||
#include <filament/IndexBuffer.h>
|
||||
#include <filament/LightManager.h>
|
||||
@@ -70,6 +72,7 @@ static const Config config {
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
App app;
|
||||
config.backend = samples::parseArgumentsForBackend(argc, argv);
|
||||
|
||||
auto setup = [&app](Engine* engine, View* view, Scene* scene) {
|
||||
auto& tcm = engine->getTransformManager();
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "common/arguments.h"
|
||||
|
||||
#include <filament/Camera.h>
|
||||
#include <filament/Engine.h>
|
||||
#include <filament/IndexBuffer.h>
|
||||
@@ -143,13 +145,16 @@ static void printUsage(char* name) {
|
||||
"Options:\n"
|
||||
" --help, -h\n"
|
||||
" Prints this message\n\n"
|
||||
" --api, -a\n"
|
||||
" Specify the backend API: opengl (default), vulkan, or metal\n\n"
|
||||
"API_USAGE"
|
||||
);
|
||||
const std::string from("SAMPLE");
|
||||
for (size_t pos = usage.find(from); pos != std::string::npos; pos = usage.find(from, pos)) {
|
||||
usage.replace(pos, from.length(), exec_name);
|
||||
}
|
||||
const std::string apiUsage("API_USAGE");
|
||||
for (size_t pos = usage.find(apiUsage); pos != std::string::npos; pos = usage.find(apiUsage, pos)) {
|
||||
usage.replace(pos, apiUsage.length(), samples::getBackendAPIArgumentsUsage());
|
||||
}
|
||||
std::cout << usage;
|
||||
}
|
||||
|
||||
@@ -170,16 +175,7 @@ static int handleCommandLineArgments(int argc, char* argv[], Config* config) {
|
||||
printUsage(argv[0]);
|
||||
exit(0);
|
||||
case 'a':
|
||||
if (arg == "opengl") {
|
||||
config->backend = Engine::Backend::OPENGL;
|
||||
} else if (arg == "vulkan") {
|
||||
config->backend = Engine::Backend::VULKAN;
|
||||
} else if (arg == "metal") {
|
||||
config->backend = Engine::Backend::METAL;
|
||||
} else {
|
||||
std::cerr << "Unrecognized backend. Must be 'opengl'|'vulkan'|'metal'."
|
||||
<< std::endl;
|
||||
}
|
||||
config->backend = samples::parseArgumentsForBackend(arg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "common/arguments.h"
|
||||
|
||||
#include <filament/Engine.h>
|
||||
#include <filament/View.h>
|
||||
#include <filament/Scene.h>
|
||||
@@ -29,6 +31,7 @@ using namespace filament;
|
||||
int main(int argc, char** argv) {
|
||||
Config config;
|
||||
config.title = "strobecolor";
|
||||
config.backend = samples::parseArgumentsForBackend(argc, argv);
|
||||
Skybox* skybox;
|
||||
|
||||
auto setup = [&skybox](Engine* engine, View* view, Scene* scene) {
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "common/arguments.h"
|
||||
|
||||
#include <filament/Engine.h>
|
||||
#include <filament/IndirectLight.h>
|
||||
#include <filament/LightManager.h>
|
||||
@@ -73,13 +75,16 @@ static void printUsage(char* name) {
|
||||
"Options:\n"
|
||||
" --help, -h\n"
|
||||
" Prints this message\n\n"
|
||||
" --api, -a\n"
|
||||
" Specify the backend API: opengl (default), vulkan, or metal\n"
|
||||
"API_USAGE"
|
||||
);
|
||||
const std::string from("SHOWCASE");
|
||||
for (size_t pos = usage.find(from); pos != std::string::npos; pos = usage.find(from, pos)) {
|
||||
usage.replace(pos, from.length(), exec_name);
|
||||
}
|
||||
const std::string apiUsage("API_USAGE");
|
||||
for (size_t pos = usage.find(apiUsage); pos != std::string::npos; pos = usage.find(apiUsage, pos)) {
|
||||
usage.replace(pos, apiUsage.length(), samples::getBackendAPIArgumentsUsage());
|
||||
}
|
||||
std::cout << usage;
|
||||
}
|
||||
|
||||
@@ -100,15 +105,7 @@ static int handleCommandLineArguments(int argc, char* argv[], Config* config) {
|
||||
printUsage(argv[0]);
|
||||
exit(0);
|
||||
case 'a':
|
||||
if (arg == "opengl") {
|
||||
config->backend = Engine::Backend::OPENGL;
|
||||
} else if (arg == "vulkan") {
|
||||
config->backend = Engine::Backend::VULKAN;
|
||||
} else if (arg == "metal") {
|
||||
config->backend = Engine::Backend::METAL;
|
||||
} else {
|
||||
std::cerr << "Unrecognized backend. Must be 'opengl'|'vulkan'|'metal'.\n";
|
||||
}
|
||||
config->backend = samples::parseArgumentsForBackend(arg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "common/arguments.h"
|
||||
|
||||
#include <filament/Camera.h>
|
||||
#include <filament/Engine.h>
|
||||
#include <filament/IndexBuffer.h>
|
||||
@@ -87,12 +89,15 @@ static void printUsage(char* name) {
|
||||
"Options:\n"
|
||||
" --help, -h\n"
|
||||
" Prints this message\n\n"
|
||||
" --api, -a\n"
|
||||
" Specify the backend API: opengl, vulkan, metal, or webgpu\n");
|
||||
"API_USAGE");
|
||||
const std::string from("TEXTUREDQUAD");
|
||||
for (size_t pos = usage.find(from); pos != std::string::npos; pos = usage.find(from, pos)) {
|
||||
usage.replace(pos, from.length(), exec_name);
|
||||
}
|
||||
const std::string apiUsage("API_USAGE");
|
||||
for (size_t pos = usage.find(apiUsage); pos != std::string::npos; pos = usage.find(apiUsage, pos)) {
|
||||
usage.replace(pos, apiUsage.length(), samples::getBackendAPIArgumentsUsage());
|
||||
}
|
||||
std::cout << usage;
|
||||
}
|
||||
|
||||
@@ -113,19 +118,7 @@ static int handleCommandLineArguments(int argc, char* argv[], Config& config) {
|
||||
printUsage(argv[0]);
|
||||
exit(0);
|
||||
case 'a':
|
||||
if (arg == "opengl") {
|
||||
config.backend = Engine::Backend::OPENGL;
|
||||
} else if (arg == "vulkan") {
|
||||
config.backend = Engine::Backend::VULKAN;
|
||||
} else if (arg == "metal") {
|
||||
config.backend = Engine::Backend::METAL;
|
||||
} else if (arg == "webgpu") {
|
||||
config.backend = Engine::Backend::WEBGPU;
|
||||
} else {
|
||||
std::cerr << "Unrecognized backend. Must be "
|
||||
"'opengl'|'vulkan'|'metal'|'webgpu'.\n";
|
||||
exit(1);
|
||||
}
|
||||
config.backend = samples::parseArgumentsForBackend(arg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "common/arguments.h"
|
||||
|
||||
#include <filament/IndexBuffer.h>
|
||||
#include <filament/Material.h>
|
||||
#include <filament/RenderableManager.h>
|
||||
@@ -45,6 +47,7 @@ static constexpr uint16_t TRIANGLE_INDICES[] { 0, 1, 2 };
|
||||
int main(int argc, char** argv) {
|
||||
Config config;
|
||||
config.title = "vbotest";
|
||||
config.backend = samples::parseArgumentsForBackend(argc, argv);
|
||||
|
||||
// Aggregate positions and colors into a single buffer without interleaving.
|
||||
std::vector<uint8_t> vbo(sizeof(POSITIONS) + sizeof(COLORS));
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "common/arguments.h"
|
||||
|
||||
#include <filament/IndexBuffer.h>
|
||||
#include <filament/RenderableManager.h>
|
||||
#include <filament/Scene.h>
|
||||
@@ -55,13 +57,16 @@ static void printUsage(char* name) {
|
||||
"Options:\n"
|
||||
" --help, -h\n"
|
||||
" Prints this message\n\n"
|
||||
" --api, -a\n"
|
||||
" Specify the backend API: opengl (default), vulkan, or metal\n\n"
|
||||
"API_USAGE"
|
||||
);
|
||||
const std::string from("SHOWCASE");
|
||||
for (size_t pos = usage.find(from); pos != std::string::npos; pos = usage.find(from, pos)) {
|
||||
usage.replace(pos, from.length(), exec_name);
|
||||
}
|
||||
const std::string apiUsage("API_USAGE");
|
||||
for (size_t pos = usage.find(apiUsage); pos != std::string::npos; pos = usage.find(apiUsage, pos)) {
|
||||
usage.replace(pos, apiUsage.length(), samples::getBackendAPIArgumentsUsage());
|
||||
}
|
||||
std::cout << usage;
|
||||
}
|
||||
|
||||
@@ -82,15 +87,7 @@ static int handleCommandLineArguments(int argc, char* argv[], App* app) {
|
||||
printUsage(argv[0]);
|
||||
exit(0);
|
||||
case 'a':
|
||||
if (arg == "opengl") {
|
||||
app->config.backend = Engine::Backend::OPENGL;
|
||||
} else if (arg == "vulkan") {
|
||||
app->config.backend = Engine::Backend::VULKAN;
|
||||
} else if (arg == "metal") {
|
||||
app->config.backend = Engine::Backend::METAL;
|
||||
} else {
|
||||
std::cerr << "Unrecognized backend. Must be 'opengl'|'vulkan'|'metal'.\n";
|
||||
}
|
||||
app->config.backend = samples::parseArgumentsForBackend(arg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user