2D 绘图缓存节点
This commit is contained in:
@@ -85,12 +85,7 @@ std::unique_ptr<Object_Type> build_object() {
|
||||
}
|
||||
template <typename Renderable>
|
||||
void add_renderable(Scene& scene, Renderable* renderable) {
|
||||
ASSERT_TRUE((scene.edit_dependency_graph<aethera::Prepare_Data_Tag, aethera::Paint_Tag>(
|
||||
[&](auto& prepare, auto& paint) {
|
||||
prepare.add(renderable);
|
||||
paint.add(renderable);
|
||||
}
|
||||
).has_value()));
|
||||
ASSERT_TRUE(scene.edit_dependency_graph<aethera::Prepare_Data_Tag>([&](auto& prepare) { prepare.add(renderable); }).has_value());
|
||||
}
|
||||
}
|
||||
TEST(renderable_capability, direct_stages_do_not_allocate_subgraphs) {
|
||||
@@ -102,12 +97,12 @@ TEST(renderable_capability, direct_stages_do_not_allocate_subgraphs) {
|
||||
auto& data = renderable->data_for_test();
|
||||
auto& base = static_cast<aethera::Renderable::Private&>(data);
|
||||
EXPECT_EQ(data.prepare_calls, 1);
|
||||
EXPECT_EQ(data.paint_calls, 1);
|
||||
EXPECT_EQ(data.paint_calls, 0);
|
||||
EXPECT_EQ(base.prepare_graph, nullptr);
|
||||
EXPECT_EQ(base.paint_graph, nullptr);
|
||||
scene->process([](const auto&) {});
|
||||
EXPECT_EQ(data.prepare_calls, 1);
|
||||
EXPECT_EQ(data.paint_calls, 1);
|
||||
EXPECT_EQ(data.paint_calls, 0);
|
||||
}
|
||||
TEST(renderable_capability, graph_stage_builds_lazily_and_rebuilds_inside_condition) {
|
||||
aethera::initialize_runtime(2);
|
||||
@@ -141,7 +136,7 @@ TEST(renderable_state, scene_and_renderable_callbacks_publish_at_stage_boundarie
|
||||
renderable->set_state_callback<aethera::Renderable::Base_Tag>([&](const auto& state) {
|
||||
++renderable_updates;
|
||||
EXPECT_TRUE(state.prepare_executed);
|
||||
EXPECT_TRUE(state.paint_executed);
|
||||
EXPECT_FALSE(state.paint_executed);
|
||||
});
|
||||
scene->set_state_callback<aethera::Scene::Base_Tag>([&](const auto& state) {
|
||||
++scene_updates;
|
||||
@@ -190,13 +185,11 @@ TEST(scene_condition, upstream_change_makes_downstream_run_in_same_taskflow) {
|
||||
auto source = build_object<Dependency>();
|
||||
auto target = build_object<Dependency>();
|
||||
auto scene = build_object<Scene>();
|
||||
ASSERT_TRUE((scene->edit_dependency_graph<aethera::Prepare_Data_Tag, aethera::Paint_Tag>(
|
||||
[&](auto& prepare, auto& paint) {
|
||||
ASSERT_TRUE((scene->edit_dependency_graph<aethera::Prepare_Data_Tag>(
|
||||
[&](auto& prepare) {
|
||||
prepare.add(source.get());
|
||||
prepare.add(target.get());
|
||||
prepare.template add_dependency<&Dependency_Renderable::State::revision>(target.get(), source.get());
|
||||
paint.add(source.get());
|
||||
paint.add(target.get());
|
||||
}
|
||||
).has_value()));
|
||||
scene->process([](const auto&) {});
|
||||
|
||||
Reference in New Issue
Block a user