Flutter Engine
The Flutter Engine
Public Member Functions | List of all members
impeller::scene::Scene Class Reference

#include <scene.h>

Public Member Functions

 Scene ()=delete
 
 Scene (std::shared_ptr< SceneContext > scene_context)
 
 ~Scene ()
 
NodeGetRoot ()
 
bool Render (const RenderTarget &render_target, const Matrix &camera_transform)
 
bool Render (const RenderTarget &render_target, const Camera &camera)
 

Detailed Description

Definition at line 18 of file scene.h.

Constructor & Destructor Documentation

◆ Scene() [1/2]

impeller::scene::Scene::Scene ( )
delete

◆ Scene() [2/2]

impeller::scene::Scene::Scene ( std::shared_ptr< SceneContext scene_context)
explicit

Definition at line 19 of file scene.cc.

20 : scene_context_(std::move(scene_context)) {
21 root_.is_root_ = true;
22};

◆ ~Scene()

impeller::scene::Scene::~Scene ( )

Definition at line 24 of file scene.cc.

24 {
25 for (auto& child : GetRoot().GetChildren()) {
26 child->parent_ = nullptr;
27 }
28}
Node & GetRoot()
Definition: scene.cc:30

Member Function Documentation

◆ GetRoot()

Node & impeller::scene::Scene::GetRoot ( )

Definition at line 30 of file scene.cc.

30 {
31 return root_;
32}

◆ Render() [1/2]

bool impeller::scene::Scene::Render ( const RenderTarget render_target,
const Camera camera 
)

Definition at line 67 of file scene.cc.

67 {
68 return Render(render_target,
69 camera.GetTransform(render_target.GetRenderTargetSize()));
70}
bool Render(const RenderTarget &render_target, const Matrix &camera_transform)
Definition: scene.cc:34

◆ Render() [2/2]

bool impeller::scene::Scene::Render ( const RenderTarget render_target,
const Matrix camera_transform 
)

Definition at line 34 of file scene.cc.

35 {
36 fml::ScopedCleanupClosure reset_state(
37 [context = scene_context_]() { context->GetTransientsBuffer().Reset(); });
38
39 // Collect the render commands from the scene.
40 SceneEncoder encoder;
41 if (!root_.Render(encoder,
42 *scene_context_->GetContext()->GetResourceAllocator(),
43 Matrix())) {
44 FML_LOG(ERROR) << "Failed to render frame.";
45 return false;
46 }
47
48 // Encode the commands.
49
50 std::shared_ptr<CommandBuffer> command_buffer =
51 encoder.BuildSceneCommandBuffer(*scene_context_, camera_transform,
52 render_target);
53
54 // TODO(bdero): Do post processing.
55
56 if (!scene_context_->GetContext()
57 ->GetCommandQueue()
58 ->Submit({command_buffer})
59 .ok()) {
60 FML_LOG(ERROR) << "Failed to submit command buffer.";
61 return false;
62 }
63
64 return true;
65}
Wraps a closure that is invoked in the destructor unless released by the caller.
Definition: closure.h:32
bool Render(SceneEncoder &encoder, Allocator &allocator, const Matrix &parent_transform)
Definition: node.cc:345
#define FML_LOG(severity)
Definition: logging.h:82
void Reset(SkPath *path)
Definition: path_ops.cc:40
SK_API sk_sp< PrecompileColorFilter > Matrix()
#define ERROR(message)
Definition: elf_loader.cc:260

The documentation for this class was generated from the following files: