#pragma once #include #include #include #include #include #include namespace boundard { // 渲染组件:描述 Actor 的几何形状、颜色和可选 PNG 纹理。 class Mesh { public: struct Vertex { std::array position; std::array color; std::array uv; }; std::vector vertices; std::vector indices; std::string texture; // PNG 纹理路径;为空时使用白色纹理。 std::array color() const { std::lock_guard lock(*color_mutex_); return color_; } void set_color(std::array color) { std::lock_guard lock(*color_mutex_); color_ = color; } static Mesh quad() { Mesh mesh; mesh.vertices = { {{-1.0F, -1.0F}, {1.0F, 1.0F, 1.0F, 1.0F}, {0.0F, 0.0F}}, {{1.0F, -1.0F}, {1.0F, 1.0F, 1.0F, 1.0F}, {1.0F, 0.0F}}, {{1.0F, 1.0F}, {1.0F, 1.0F, 1.0F, 1.0F}, {1.0F, 1.0F}}, {{-1.0F, 1.0F}, {1.0F, 1.0F, 1.0F, 1.0F}, {0.0F, 1.0F}}, }; mesh.indices = {0, 1, 2, 2, 3, 0}; return mesh; } private: std::unique_ptr color_mutex_ = std::make_unique(); std::array color_{1.0F, 1.0F, 1.0F, 1.0F}; }; } // namespace boundard