다음을 통해 공유


텍스처

텍스처는 변경할 수 없는 공유 리소스입니다. 텍스처는 Blob Storage에서 로드되며 자습서: 환경 및 재질 변경에 설명된 대로 모델이 직접 적용할 수 있습니다. 그러나 가장 일반적으로 텍스처는 변환된 모델의 일부로 해당 재료에 의해 참조됩니다.

텍스처 형식

텍스처 형식마다 사용 사례가 다릅니다.

  • 2D 텍스처는 주로 재료에서 사용됩니다.
  • skyCubemaps를 사용할 수 있습니다.

지원되는 텍스처 형식

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 설명서

다음 단계