Sdílet prostřednictvím


Textury

Textury jsou neměnný sdílený prostředek. Textury lze načíst z úložiště objektů blob a použít přímo na modely, jak je znázorněno v kurzu: Změna prostředí a materiálů. Nejčastěji se ale textury budou součástí převedeného modelu, kde na tyto textury odkazují jeho materiály.

Typy textur

Různé typy textur mají různé případy použití:

  • 2D textury se používají hlavně v materiálech.
  • Mapy datových krychlí lze použít pro oblohu.

Podporované formáty textury

Všechny textury poskytnuté ARR musí být ve formátu DDS. Nejlépe s mipmapy a komprese textury.

Načítání textur

Při načítání textury musíte zadat jeho očekávaný typ. Pokud se typ neshoduje, zatížení textury se nezdaří. Načtení textury se stejným identifikátorem URI dvakrát vrátí stejný objekt textury, protože se jedná o sdílený prostředek.

Podobně jako při načítání modelů existují dvě varianty adresování prostředku textury ve zdrojovém úložišti objektů blob:

  • Texturu můžou řešit přímo parametry úložiště objektů blob, pokud je úložiště objektů blob propojené s účtem. Relevantní funkce načítání v tomto případě je LoadTextureAsync s parametrem LoadTextureOptions.
  • Prostředek textury může řešit jeho identifikátor URI SAS. Relevantní funkce načítání je LoadTextureFromSasAsync s parametrem LoadTextureFromSasOptions. Tuto variantu použijte také při načítání předdefinovaných textur.

Následující ukázkový kód ukazuje, jak načíst texturu:

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

Všimněte si, že v případě použití varianty SAS se liší pouze funkce/parametr načítání.

V závislosti na tom, k čemu má být textura použita, mohou existovat omezení pro typ textury a obsah. Například hrubá mapa materiálu PBR musí být ve stupních šedé.

Dokumentace k rozhraní API

Další kroky