This commit is contained in:
2026-08-27 17:35:12 +08:00
parent f0f358af24
commit bc0bb24aea
8 changed files with 243 additions and 88 deletions
@@ -281,6 +281,7 @@ void Render_Scene_3D::Private::ensure_frame_taskflow(Object* object) {
template <Attached Object>
Render_Scene_3D::Render_Result Render_Scene_3D::Private::render(Object* object, Frame_3D* frame) {
if (!frame) throw std::invalid_argument("Render_Scene_3D requires a non-null external frame");
frame->mark(Frame_Trace_Marker::scene_render_entered);
{
std::lock_guard lock(render_mutex);
if (!frame_callback)
@@ -301,7 +302,9 @@ Render_Scene_3D::Render_Result Render_Scene_3D::Private::render(Object* object,
* 在创建或执行 frame_taskflow 前一次性推进完整 Scene,确保公共
* Render_Graph_Tag 已构建并且 frame DAG 引用的是同一权威运行图。
*/
frame->mark(Frame_Trace_Marker::scene_advance_started);
double_buffer::detail::Internal_Access::advance(object);
frame->mark(Frame_Trace_Marker::scene_advance_finished);
const Prop& prop = static_cast<const Prop&>(
double_buffer::detail::Internal_Access::current_prop(object));
if (!prop.view_active) return reject_frame(Render_Result::view_inactive);