Texturen

Texturen sind unveränderliche freigegebene Ressourcen. Texturen können aus blob-Speicher geladen und direkt auf Modelle angewendet werden, wie im Lernprogramm gezeigt: Ändern der Umgebung und materialien. Am häufigsten sind Texturen jedoch in einem konvertierten Modell zu finden, in dem sie anhand ihrer Materialien referenziert werden.

Typen von Texturen

Verschiedene Typen von Texturen weisen verschiedene Anwendungsfälle auf:

  • 2D-Texturen werden hauptsächlich in Materialien verwendet.
  • Cubemaps können für den Himmel verwendet werden.

Unterstützte Texturformate

Alle in Azure Remote Rendering (ARR) bereitgestellten Texturen müssen im DDS-Format vorliegen – vorzugsweise mit Mipmaps und Texturkomprimierung.

Laden von Texturen

Wenn Sie eine Textur laden, müssen Sie den erwarteten Typ angeben. Sollten die Typen nicht übereinstimmen, kann die Textur nicht geladen werden. Wenn eine Textur zweimal mit demselben URI geladen wird, wird dasselbe Texturobjekt zurückgegeben, da es sich um eine freigegebene Ressource handelt.

Ähnlich wie beim Laden von Modellen gibt es zwei Möglichkeiten, ein Texturobjekt im Quellblobspeicher zu adressieren:

  • Die Adressierung der Textur kann direkt über Blobspeicherparameter erfolgen (vorausgesetzt, der Blobspeicher ist mit dem Konto verknüpft). In diesem Fall ist LoadTextureAsync mit dem Parameter LoadTextureOptions die relevante Ladefunktion.
  • Die Adressierung eines Texturobjekts kann über den SAS-URI erfolgen. Die relevante Ladefunktion ist LoadTextureFromSasAsync mit dem Parameter LoadTextureFromSasOptions. Nutzen Sie diese Variante auch beim Laden von integrierten Texturen.

Im folgenden Beispielcode wird das Laden einer Textur veranschaulicht:

async void LoadMyTexture(RenderingSession session, string storageContainer, string blobName, string assetPath)
{
    try
    {
        LoadTextureOptions options = new LoadTextureOptions(storageContainer, blobName, assetPath, TextureType.Texture2D);
        Texture texture = await session.Connection.LoadTextureAsync(options);
    
        // use texture...
    }
    catch (RRException ex)
    {
    }
}
void LoadMyTexture(ApiHandle<RenderingSession> session, std::string storageContainer, std::string blobName, std::string assetPath)
{
    LoadTextureOptions params;
    params.TextureType = TextureType::Texture2D;
    params.Blob.StorageAccountName = std::move(storageContainer);
    params.Blob.BlobContainerName = std::move(blobName);
    params.Blob.AssetPath = std::move(assetPath);
    session->Connection()->LoadTextureAsync(params, [](Status status, ApiHandle<Texture> texture)
    {
        // use texture...
    });
}

Beachten Sie, dass sich bei Verwendung ihrer SAS-Variante nur die Ladefunktion/Parameter unterscheiden.

Je nachdem, wofür die Textur verwendet werden soll, können Einschränkungen hinsichtlich Texturtyp und -inhalt gelten. Die Rauheitszuordnung eines PBR-Materials beispielsweise muss in Graustufen vorliegen.

API-Dokumentation

Nächste Schritte