Compartilhar via


Tempo de vida do objeto e do recurso

O Azure Remote Rendering distingue dois tipos: objetos e recursos.

Tempo de vida do objeto

Os objetos são considerados coisas que o usuário pode criar, modificar e destruir a seu critério. Os objetos podem ser duplicados livremente, e cada instância pode ser modificada ao longo do tempo. Consequentemente, as entidades e os componentes são objetos.

O tempo de vida dos objetos está totalmente sob controle do usuário. No entanto, ele não está relacionado ao tempo de vida da representação do lado do cliente. Classes como Entity e Component têm uma função Destroy que deve ser chamada para desalocar o objeto no host de renderização remoto. Além disso, Entity.Destroy() destruirá a entidade, seus filhos e todos os componentes nessa hierarquia.

Tempo de vida do recurso

Os recursos são as coisas cujo tempo de vida é totalmente gerenciado pelo host de remote rendering. Os recursos são uma referência contada internamente. Eles são desalocados quando ninguém os referenciam mais.

A maioria dos recursos só pode ser criada indiretamente, normalmente carregando-os de um arquivo. Quando o mesmo arquivo é carregado várias vezes, o Azure Remote Rendering retornará a mesma referência e não carregará os dados novamente.

Muitos recursos são imutáveis, por exemplo, malhas e texturas. No entanto, alguns recursos são mutáveis, por exemplo, materiais. Como os recursos geralmente são compartilhados, a modificação de um recurso pode afetar vários objetos. Por exemplo, alterar a cor de um material alterará a cor de todos os objetos que usam malhas, que, por sua vez, fazem referência a esse material.

Recursos internos

O Azure Remote Rendering contém alguns recursos integrados, que podem ser carregados anexando o respectivo identificador com builtin:// o durante a chamada para RenderingSession.Connection.LoadXYZAsync(). Os recursos integrados disponíveis estão listados na documentação de cada respectivo recurso. Por exemplo, o capítulo do céu lista as texturas integradas do céu.

Tempo de vida geral

O tempo de vida de todos os objetos e recursos está vinculado à conexão. Ao desconectar, tudo é descartado. Ao se reconectar à mesma sessão, o grafo de cena ficará vazio e todos os recursos serão limpos.

Na prática, carregar o mesmo recurso em uma sessão, após uma desconexão, costuma ser mais rápido do que a primeira vez. Isto ocorre pois a maioria dos recursos deve ser baixada do Armazenamento do Azure pela primeira vez, o que não é necessário na segunda vez, economizando uma quantidade considerável de tempo.

Próximas etapas