Levensduur van objecten en resources

Azure Remote Rendering maakt onderscheid tussen twee typen: objecten en resources.

Levensduur van object

Objecten worden beschouwd als dingen die de gebruiker naar eigen goeddunken kan maken, wijzigen en vernietigen. Objecten kunnen vrijelijk worden gedupliceerd en elk exemplaar kan in de loop van de tijd muteren. Entiteiten en onderdelen zijn dus objecten.

De levensduur van objecten is volledig onder gebruikersbeheer. Het is echter niet gerelateerd aan de levensduur van de weergave aan de clientzijde. Klassen zoals Entity en Component hebben een Destroy functie die moet worden aangeroepen om de toewijzing van het object op de remote rendering-host ongedaan te maken. Entity.Destroy() Daarnaast vernietigt u de entiteit, de onderliggende elementen en alle onderdelen in die hiërarchie.

Levensduur van resources

Resources zijn zaken waarvan de levensduur volledig wordt beheerd door de remote rendering-host. Resources worden intern geteld. Ze worden de toewijzing ongedaan gemaakt wanneer niemand ernaar verwijst.

De meeste resources kunnen alleen indirect worden gemaakt, meestal door ze uit een bestand te laden. Wanneer hetzelfde bestand meerdere keren wordt geladen, retourneert Azure Remote Rendering dezelfde verwijzing en worden de gegevens niet opnieuw geladen.

Veel resources zijn onveranderbaar, bijvoorbeeld meshes en texturen. Sommige resources zijn echter veranderlijk, bijvoorbeeld materialen. Omdat resources vaak worden gedeeld, kan het wijzigen van een resource van invloed zijn op meerdere objecten. Als u bijvoorbeeld de kleur van een materiaal wijzigt, wordt de kleur gewijzigd van alle objecten die meshes gebruiken, die op hun beurt verwijzen naar dat materiaal.

Ingebouwde resources

Azure Remote Rendering bevat een aantal ingebouwde resources, die kunnen worden geladen door hun respectieve id builtin:// vooraf te laten gaan tijdens de aanroep naar RenderingSession.Connection.LoadXYZAsync(). De beschikbare ingebouwde resources worden vermeld in de documentatie voor elke betreffende functie. In het sky-hoofdstuk worden bijvoorbeeld de ingebouwde luchttextuur weergegeven.

Algemene levensduur

De levensduur van alle objecten en resources is gebonden aan de verbinding. Bij het verbreken van de verbinding wordt alles verwijderd. Wanneer u opnieuw verbinding maakt met dezelfde sessie, is de scènegrafiek leeg en worden alle resources verwijderd.

In de praktijk is het laden van dezelfde resource in een sessie, na een verbroken verbinding, meestal sneller dan de eerste keer. Dit is het geval omdat de meeste resources de eerste keer moeten worden gedownload uit Azure Storage, wat niet nodig is voor de tweede keer, wat aanzienlijke tijd bespaart.

Volgende stappen