升级
This commit is contained in:
@@ -50,6 +50,14 @@ std::string_view mode_id(Gallery_Frame_Mode mode) {
|
||||
return "low_latency";
|
||||
}
|
||||
|
||||
Gallery_Frame_Mode strategy_mode(const Frame_Control_Strategy_Base& strategy) {
|
||||
if (dynamic_cast<const Manual_Render_Scene_3D_Strategy*>(&strategy))
|
||||
return Gallery_Frame_Mode::Manual;
|
||||
if (dynamic_cast<const Playback_Render_Scene_3D_Strategy*>(&strategy))
|
||||
return Gallery_Frame_Mode::Playback;
|
||||
return Gallery_Frame_Mode::Low_Latency;
|
||||
}
|
||||
|
||||
Visual_Family visual_family(std::string_view case_id) {
|
||||
if (case_id == "datoviz_splat") return Visual_Family::Splat;
|
||||
if (case_id == "datoviz_pixel") return Visual_Family::Pixel;
|
||||
@@ -71,8 +79,8 @@ Visual_Family visual_family(std::string_view case_id) {
|
||||
class Gallery_Scene3D final : public Gallery_Scene_Interface {
|
||||
public:
|
||||
Gallery_Scene3D(std::string case_id, Gallery_Frame_Mode mode)
|
||||
: case_id_(std::move(case_id)), mode_(mode) {
|
||||
rebuild();
|
||||
: case_id_(std::move(case_id)) {
|
||||
rebuild(mode);
|
||||
}
|
||||
|
||||
const std::string& case_id() const noexcept override { return case_id_; }
|
||||
@@ -84,7 +92,9 @@ public:
|
||||
{"performance_capture", gallery_performance_capture_json(*scene_)}};
|
||||
}
|
||||
|
||||
Gallery_Frame_Mode frame_mode() const noexcept override { return mode_; }
|
||||
Gallery_Frame_Mode frame_mode() const noexcept override {
|
||||
return strategy_mode(*scene_->frame_control_strategy());
|
||||
}
|
||||
void reset_monitoring() override { render_count_ = 0; }
|
||||
void set_client_metrics(Gallery_Client_Performance metrics) noexcept override {
|
||||
client_ = metrics;
|
||||
@@ -112,8 +122,9 @@ public:
|
||||
static_cast<std::uint32_t>(std::max(1, height))};
|
||||
if (requested.width == extent_.width && requested.height == extent_.height)
|
||||
return;
|
||||
const auto mode = frame_mode();
|
||||
extent_ = requested;
|
||||
rebuild();
|
||||
rebuild(mode);
|
||||
}
|
||||
void dispatch(const Gallery_Input_Event&) override {}
|
||||
|
||||
@@ -157,7 +168,6 @@ public:
|
||||
});
|
||||
if (operation.wait() != Scene_Edit_Error::none)
|
||||
return "frame strategy replacement rejected";
|
||||
mode_ = next;
|
||||
return "frame strategy replaced";
|
||||
}
|
||||
if (request.id == "capture_next_frame") {
|
||||
@@ -181,7 +191,7 @@ public:
|
||||
std::string telemetry_json() const override {
|
||||
const auto observer = scene_->observer();
|
||||
auto kernel_observer = observer_json(observer);
|
||||
kernel_observer["mode"] = mode_id(mode_);
|
||||
kernel_observer["mode"] = mode_id(frame_mode());
|
||||
kernel_observer["event"] = "render_completed";
|
||||
kernel_observer["limit"] = "none";
|
||||
return nlohmann::json{
|
||||
@@ -193,7 +203,7 @@ public:
|
||||
}
|
||||
|
||||
private:
|
||||
void rebuild() {
|
||||
void rebuild(Gallery_Frame_Mode mode) {
|
||||
std::vector<Point> points{
|
||||
{{-0.55F, -0.25F, 0.0F}, {255, 80, 80, 255}, 24.0F},
|
||||
{{0.0F, 0.45F, 0.0F}, {80, 255, 120, 255}, 28.0F},
|
||||
@@ -204,11 +214,10 @@ private:
|
||||
state.viewport = extent_;
|
||||
state.visual_family = visual_family(case_id_);
|
||||
scene_ = Render_Scene_3D::Builder{state}.build(
|
||||
visual_, make_strategy(mode_));
|
||||
visual_, make_strategy(mode));
|
||||
}
|
||||
|
||||
std::string case_id_;
|
||||
Gallery_Frame_Mode mode_;
|
||||
Extent extent_{560, 320};
|
||||
std::shared_ptr<Point_Visual> visual_;
|
||||
std::unique_ptr<Render_Scene_3D> scene_;
|
||||
|
||||
Reference in New Issue
Block a user