From 506d2fb562c15a07ee470a8ac578cf49e0c9160d Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Tue, 1 Jul 2025 10:07:35 +0800 Subject: [PATCH] expose Material->getFeautureLevel --- .../native/include/c_api/TMaterialInstance.h | 1 + .../native/src/c_api/TMaterialInstance.cpp | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/thermion_dart/native/include/c_api/TMaterialInstance.h b/thermion_dart/native/include/c_api/TMaterialInstance.h index dc07b35d..89407d66 100644 --- a/thermion_dart/native/include/c_api/TMaterialInstance.h +++ b/thermion_dart/native/include/c_api/TMaterialInstance.h @@ -73,6 +73,7 @@ extern "C" typedef enum TTransparencyMode TTransparencyMode; EMSCRIPTEN_KEEPALIVE TMaterialInstance *Material_createInstance(TMaterial *tMaterial); + EMSCRIPTEN_KEEPALIVE TFeatureLevel Material_getFeatureLevel(TMaterial *tMaterial); EMSCRIPTEN_KEEPALIVE TMaterial *Material_createImageMaterial(TEngine *tEngine); EMSCRIPTEN_KEEPALIVE TMaterial *Material_createGridMaterial(TEngine *tEngine); EMSCRIPTEN_KEEPALIVE TMaterial *Material_createGizmoMaterial(TEngine *tEngine); diff --git a/thermion_dart/native/src/c_api/TMaterialInstance.cpp b/thermion_dart/native/src/c_api/TMaterialInstance.cpp index 31b7d945..864dc905 100644 --- a/thermion_dart/native/src/c_api/TMaterialInstance.cpp +++ b/thermion_dart/native/src/c_api/TMaterialInstance.cpp @@ -34,6 +34,21 @@ namespace thermion return reinterpret_cast(instance); } + EMSCRIPTEN_KEEPALIVE TFeatureLevel Material_getFeatureLevel(TMaterial *tMaterial) { + auto *material = reinterpret_cast(tMaterial); + auto featureLevel = material->getFeatureLevel(); + switch(featureLevel) { + case filament::backend::FeatureLevel::FEATURE_LEVEL_0: + return FEATURE_LEVEL_0; + case filament::backend::FeatureLevel::FEATURE_LEVEL_1: + return FEATURE_LEVEL_1; + case filament::backend::FeatureLevel::FEATURE_LEVEL_2: + return FEATURE_LEVEL_2; + case filament::backend::FeatureLevel::FEATURE_LEVEL_3: + return FEATURE_LEVEL_3; + } + } + EMSCRIPTEN_KEEPALIVE TMaterial *Material_createImageMaterial(TEngine *tEngine) { auto *engine = reinterpret_cast(tEngine); auto *material = filament::Material::Builder()