#pragma once #include #include #include #include #include #include #include namespace extra2d { /** * @brief 实例化渲染测试节点 * * 测试实例化渲染功能,渲染大量相同精灵但使用不同变换 */ class InstancedTestNode : public Node { public: InstancedTestNode(); ~InstancedTestNode() override; /** * @brief 初始化实例化渲染资源 * @param instanceCount 实例数量 * @return 初始化是否成功 */ bool initialize(uint32_t instanceCount = 1000); /** * @brief 每帧更新实例数据 * @param dt 时间增量 */ void update(float dt); /** * @brief 渲染实例(收集渲染命令) */ void render() override; private: InstanceBuffer instanceBuffer_; // 实例缓冲区 std::vector instanceData_; // CPU端实例数据 uint32_t instanceCount_ = 0; // 实例数量 float time_ = 0.0f; // 时间累积 // 资源句柄 Handle material_; Handle mesh_; Handle texture_; /** * @brief 更新实例变换 */ void updateInstances(); }; } // namespace extra2d