Agent Skillsgoogle/filament › filament-lifetime

filament-lifetime

GitHub

指导 Filament 渲染引擎中对象的生命周期管理,涵盖 ECS 实体组件及 GPU 原生资源的正确创建与销毁规范,防止内存泄漏。

tools/ai/agents/skills/filament_lifetime/SKILL.md google/filament

Trigger Scenarios

初始化 Filament 渲染管线 分配或释放 GPU 缓冲区 处理 Filament 实体生命周期

Install

npx skills add google/filament --skill filament-lifetime -g -y
More Options

Non-standard path

npx skills add https://github.com/google/filament/tree/main/tools/ai/agents/skills/filament_lifetime -g -y

Use without installing

npx skills use google/filament@filament-lifetime

指定 Agent (Claude Code)

npx skills add google/filament --skill filament-lifetime -a claude-code -g -y

安装 repo 全部 skill

npx skills add google/filament --all -g -y

预览 repo 内 skill

npx skills add google/filament --list

SKILL.md

Frontmatter
{
    "name": "filament-lifetime",
    "description": "Enforce correct Filament object creation and destruction lifecycles. Use this skill when initializing rendering pipelines or allocating\/deallocating GPU buffers and entities."
}

Filament object creation and destruction lifecycles

Filament manages its own native allocations. To prevent segmentation faults and memory leaks, follow these rules:

1. ECS Entities & Components

Getting the Entity Manager

  • Preferred Method: Retrieve the EntityManager directly from the Engine instance: utils::EntityManager& em = engine->getEntityManager();
  • Alternative (Avoid if engine is available): Only use the global singleton if the Engine pointer is inaccessible: utils::EntityManager& em = utils::EntityManager::get();

Entities

  • Create: Create Entity IDs using the entity manager: utils::Entity entity = engine->getEntityManager().create();
  • Destroy: Free the Entity ID from the entity manager: engine->getEntityManager().destroy(entity);

Components

  • Create: Attach components to an existing entity using manager builders:
    • Renderables/Lights: Use RenderableManager::Builder or LightManager::Builder on the entity:
      RenderableManager::Builder(1)
          .geometry(0, RenderableManager::PrimitiveType::TRIANGLES, vb, ib)
          .material(0, matInstance)
          .build(*engine, entity);
      
    • Cameras: Attach a Camera component to the entity: Camera* camera = engine->createCamera(entity);
  • Destroy (CRITICAL):
    1. To clean up the entire entity: First, destroy all Filament-managed components on the entity: engine->destroy(entity); Second, free the Entity ID: engine->getEntityManager().destroy(entity);
      // Correct Entity Cleanup
      engine->destroy(myEntity);
      engine->getEntityManager().destroy(myEntity);
      
    2. To remove a single component from the entity: You can destroy specific components individually without deleting the entity:
      • Cameras: engine->destroyCameraComponent(entity);
      • Transforms: engine->getTransformManager().destroy(entity);
      • Renderables: engine->getRenderableManager().destroy(entity);

2. Engine-Managed Native Objects

Native GPU objects are created using the Engine factory or nested Builder patterns.

  • NO delete: Never call standard C++ delete on pointers returned by Engine.
  • Direct Factories: Instantiated directly from the Engine instance.
    • Objects: View, Scene, Renderer, SwapChain.
    • Pattern:
      View* view = engine->createView();
      // ...
      engine->destroy(view);
      
  • Builder Pattern: Instantiated using a nested Builder class, passing the engine instance to build(*engine).
    • Objects: VertexBuffer, IndexBuffer, Texture, Material, IndirectLight, Skybox, RenderTarget.
    • Pattern:
      VertexBuffer* vb = VertexBuffer::Builder()
          .vertexCount(count)
          .bufferCount(1)
          .attribute(VertexAttribute::POSITION, 0, VertexBuffer::AttributeType::FLOAT3)
          .build(*engine);
      // ...
      engine->destroy(vb);
      

Version History

  • d8b4a37 Current 2026-08-20 07:30

Same Skill Collection

skills/bindings_synchronization/SKILL.md
skills/code_review/SKILL.md
skills/cpp_header_inclusion/SKILL.md
skills/cpp_static_thread_safety/SKILL.md
skills/filament_android_development/SKILL.md
skills/filament_build_clean/SKILL.md
skills/filament_desktop_testing/SKILL.md
skills/header_self_containment/SKILL.md
skills/preprocessor_guard_hygiene/SKILL.md
skills/verification_protocols/SKILL.md
tools/ai/agents/skills/filament_math/SKILL.md

Metadata

Files
0
Version
d8b4a37
Hash
b876a8e3
Indexed
2026-08-20 07:30

- 위키
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-25 05:14
浙ICP备14020137号-1 $방문자$