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 parametremLoadTextureOptions
. - Prostředek textury může řešit jeho identifikátor URI SAS. Relevantní funkce načítání je
LoadTextureFromSasAsync
s parametremLoadTextureFromSasOptions
. 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
- C# Texture – třída
- Vykreslování jazyka C#Připojení ion LoadTextureAsync()
- Vykreslování jazyka C#Připojení ion LoadTextureFromSasAsync()
- C++ Texture – třída
- Vykreslování C++Připojení ion::LoadTextureAsync()
- Vykreslování C++Připojení ion::LoadTextureFromSasAsync()