Dela via


Bakgrunder

Strukturer är en oföränderlig delad resurs. Texturer kan läsas in från bloblagring och tillämpas direkt på modeller, vilket visas i Självstudie: Ändra miljö och material. Oftast är dock texturer en del av en konverterad modell, där de refereras av dess material.

Strukturtyper

Olika typer av texturer har olika användningsfall:

  • 2D-texturer används huvudsakligen i material.
  • Kubkartor kan användas för himlen.

Texturformat som stöds

Alla texturer som ges till ARR måste vara i DDS-format. Helst med mipmaps och texturkomprimering.

Läsa in texturer

När du läser in en struktur måste du ange dess förväntade typ. Om typen matchar fel misslyckas texturbelastningen. Om du läser in en struktur med samma URI två gånger returneras samma strukturobjekt, eftersom det är en delad resurs.

På samma sätt som för inläsningsmodeller finns det två varianter av att hantera en strukturtillgång i källbloblagringen:

  • Strukturen kan hanteras direkt av bloblagringsparametrar, om bloblagringen är länkad till kontot. Relevant inläsningsfunktion i det här fallet är LoadTextureAsync med parametern LoadTextureOptions.
  • Strukturtillgången kan åtgärdas av dess SAS-URI. Relevant inläsningsfunktion är LoadTextureFromSasAsync med parametern LoadTextureFromSasOptions. Använd även den här varianten när du läser in inbyggda texturer.

Följande exempelkod visar hur du läser in en struktur:

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...
    });
}

Observera att om du använder dess SAS-variant är det bara inläsningsfunktionen/parametern som skiljer sig åt.

Beroende på vad strukturen ska användas för kan det finnas begränsningar för texturtyp och innehåll. Till exempel måste grovhetskartan för ett PBR-material vara gråskala.

API-dokumentation

Nästa steg