紋理
紋理是固定的 共用資源 。 紋理可以從 Blob 儲存體 載入 ,並直接套用至模型,如教學課程:變更環境和材質 中所述 。 不過,最常見的情況是紋理會是已轉換模型的 一 部分,其材質 會參考 它們。
紋理類型
不同的紋理類型有不同的使用案例:
支援的紋理格式
提供給 ARR 的所有紋理都必須使用 DDS 格式 。 最好使用 Mipmap 和紋理壓縮。
載入紋理
載入紋理時,您必須指定其預期類型。 如果類型不符,紋理載入會失敗。 載入具有相同 URI 的紋理兩次會傳回相同的紋理物件,因為它是 共用資源 。
與載入模型類似,在來源 Blob 儲存體中定址紋理資產有兩種變體:
- 如果 Blob 儲存體連結至帳戶 ,則紋理可以直接由 Blob 儲存體參數定址。 在此情況下,相關的載入函式是
LoadTextureAsync
搭配 參數LoadTextureOptions
。 - 紋理資產可以透過其 SAS URI 來定址。 相關的載入函式具有
LoadTextureFromSasAsync
參數LoadTextureFromSasOptions
。 載入內建紋理 時 也使用此變體。
下列範例程式碼示範如何載入紋理:
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...
});
}
請注意,如果只使用其 SAS 變體,載入函式/參數會有所不同。
根據紋理應該使用的內容,紋理類型和內容可能會有限制。 例如,PBR 材質 的 粗糙度地圖必須是灰階。
API 文件
- C# 紋理類別
- C# 轉譯連線。LoadTextureAsync()
- C# 轉譯連線。LoadTextureFromSasAsync()
- C++ 紋理類別
- C++ 轉譯連線ion::LoadTextureAsync()
- C++ 轉譯連線ion::LoadTextureFromSasAsync()