Duração dos objetos e recursos
A Renderização Remota do Azure distingue entre 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 próprio critério. Os objetos podem ser duplicados livremente e cada instância pode sofrer mutações ao longo do tempo. Consequentemente, entidades e componentes são objetos.
O tempo de vida dos objetos está totalmente sob controle do usuário. No entanto, não está relacionado com o tempo de vida da representação do lado do cliente. As classes gostam Entity
e Component
têm uma Destroy
função que deve ser chamada para desalocar o objeto no host de renderização remota. Além disso, destruirá a entidade, Entity.Destroy()
seus filhos e todos os componentes dessa hierarquia.
Tempo de vida do recurso
Recursos são coisas cujo tempo de vida é inteiramente gerenciado pelo host de renderização remota. Os recursos são referência contada internamente. Eles são desalocados quando ninguém mais faz referência a eles.
A maioria dos recursos só pode ser criada indiretamente, normalmente carregando-os de um arquivo. Quando o mesmo arquivo é carregado várias vezes, a Renderização Remota do Azure 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, modificar um recurso pode afetar vários objetos. Por exemplo, alterar a cor de um material mudará a cor de todos os objetos que usam malhas, que por sua vez fazem referência a esse material.
Recursos incorporados
A Renderização Remota do Azure contém alguns recursos internos, que podem ser carregados antecipando seus respetivos identificadores durante builtin://
a chamada para RenderingSession.Connection.LoadXYZAsync()
. Os recursos internos disponíveis estão listados na documentação para cada recurso respetivo. Por exemplo, o capítulo do céu lista as texturas do céu incorporadas.
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 gráfico de cena estará vazio e todos os recursos serão limpos.
Na prática, carregar o mesmo recurso em uma sessão, após uma desconexão, geralmente é mais rápido do que da primeira vez. Esse é o caso porque a maioria dos recursos deve ser baixada do Armazenamento do Azure na primeira vez, o que não é necessário na segunda vez, economizando uma quantidade considerável de tempo.