텍스처
텍스처는 변경할 수 없는 공유 리소스입니다. 텍스처는 Blob Storage에서 로드되며 자습서: 환경 및 재질 변경에 설명된 대로 모델이 직접 적용할 수 있습니다. 그러나 가장 일반적으로 텍스처는 변환된 모델의 일부로 해당 재료에 의해 참조됩니다.
텍스처 형식
텍스처 형식마다 사용 사례가 다릅니다.
지원되는 텍스처 형식
ARR에 지정된 모든 텍스처는 DDS 형식이어야 합니다. mipmaps 및 텍스처 압축을 사용하는 것이 좋습니다.
텍스처 로드
텍스처를 로드하는 경우 예상되는 형식을 지정해야 합니다. 형식이 일치하지 않으면 텍스처 로드가 실패합니다. 동일한 URI를 사용하여 텍스처를 두 번 로드하면 동일한 텍스처 개체가 반환됩니다. 이는 공유 리소스이기 때문입니다.
모델을 로드하는 것과 유사하게 원본 Blob 스토리지에서 텍스처 자산을 처리하는 두 가지 변형이 있습니다.
- Blob 스토리지가 계정에 연결된 경우 Blob 스토리지 매개 변수를 통해 텍스처를 직접 처리합니다. 이 경우 매개 변수
LoadTextureOptions
와 관련된 로딩 함수는LoadTextureAsync
입니다. - 텍스처 자산은 SAS URI로 처리할 수 있습니다. 매개 변수
LoadTextureFromSasOptions
와 관련된 로딩 함수는LoadTextureFromSasAsync
입니다. 기본 제공 텍스처를 로드하는 경우에도 이 변형을 사용합니다.
다음 샘플 코드에서는 텍스처를 로드하는 방법을 보여줍니다.
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# RenderingConnection.LoadTextureAsync()
- C# RenderingConnection.LoadTextureFromSasAsync()
- C++ 텍스처 클래스
- C++ RenderingConnection::LoadTextureAsync()
- C++ RenderingConnection::LoadTextureFromSasAsync()