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:
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 parameternLoadTextureOptions
. - Strukturtillgången kan åtgärdas av dess SAS-URI. Relevant inläsningsfunktion är
LoadTextureFromSasAsync
med parameternLoadTextureFromSasOptions
. 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
- C#-texturklass
- C#-återgivning Anslut ion. LoadTextureAsync()
- C#-återgivning Anslut ion. LoadTextureFromSasAsync()
- C++ Texturklass
- C++ Rendering Anslut ion::LoadTextureAsync()
- C++ Rendering Anslut ion::LoadTextureFromSasAsync()