// Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef FLUTTER_IMPELLER_SCENE_SCENE_ENCODER_H_ #define FLUTTER_IMPELLER_SCENE_SCENE_ENCODER_H_ #include #include #include #include "impeller/renderer/command_buffer.h" #include "impeller/scene/geometry.h" #include "impeller/scene/material.h" namespace impeller { namespace scene { class Scene; struct SceneCommand { std::string label; Matrix transform; Geometry* geometry; Material* material; }; class SceneEncoder { public: void Add(const SceneCommand& command); private: SceneEncoder(); std::shared_ptr BuildSceneCommandBuffer( const SceneContext& scene_context, const Matrix& camera_transform, RenderTarget render_target) const; std::vector commands_; friend Scene; SceneEncoder(const SceneEncoder&) = delete; SceneEncoder& operator=(const SceneEncoder&) = delete; }; } // namespace scene } // namespace impeller #endif // FLUTTER_IMPELLER_SCENE_SCENE_ENCODER_H_