Textúrák
A textúra nem módosítható megosztott erőforrás. A textúrák a Blob Storage-ból tölthetők be, és közvetlenül alkalmazhatók a modellekre, ahogyan az oktatóanyagban is látható: A környezet és az anyagok módosítása. Általában azonban a textúrák egy átalakított modell részei lesznek, ahol az anyagok hivatkoznak rájuk.
Textúratípusok
A különböző textúratípusok különböző használati eseteket használnak:
Támogatott textúraformátumok
Az ARR-nek adott összes anyagmintának DDS formátumban kell lennie. Lehetőleg mipmap-okkal és textúratömörítéssel.
Textúrák betöltése
A textúra betöltésekor meg kell adnia a várt típust. Ha a típus nem egyezik, a textúra terhelése meghiúsul. Ha ugyanazt az URI-t kétszer tölti be, ugyanazt a textúraobjektumot adja vissza, mivel az egy megosztott erőforrás.
A modellek betöltéséhez hasonlóan a forrás blobtárolóban a textúra-objektumot kétféleképpen lehet kezelni:
- A textúra közvetlenül a blobtároló paramétereivel kezelhető, ha a blobtároló a fiókhoz van kapcsolva. A megfelelő betöltési függvény ebben az esetben a paraméterrel
LoadTextureOptions
vanLoadTextureAsync
. - A textúra-objektum az SAS URI-jával kezelhető. A megfelelő betöltési függvény a paraméterrel
LoadTextureFromSasOptions
vanLoadTextureFromSasAsync
megadva. Használja ezt a változatot beépített textúrák betöltésekor is.
Az alábbi mintakód bemutatja, hogyan tölthető be a textúra:
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...
});
}
Vegye figyelembe, hogy az SAS-változat használata esetén csak a betöltési függvény/paraméter különbözik.
Attól függően, hogy a textúra mire szolgál, korlátozásokat alkalmazhat a textúra típusára és tartalmára. Egy PBR-anyag érdességi térképének például szürkeárnyalatosnak kell lennie.
API-dokumentáció
- C# Textúra osztály
- C# renderelés Csatlakozás ion. LoadTextureAsync()
- C# renderelés Csatlakozás ion. LoadTextureFromSasAsync()
- C++ textúraosztály
- C++ renderelés Csatlakozás ion::LoadTextureAsync()
- C++ renderelés Csatlakozás ion::LoadTextureFromSasAsync()