2014-02-13 2 views
1

ID3D11Texture2D * 객체의 배열을 가져 와서 HLSL에서 Texture2DArray를 사용할 수있게 해주는 하나의 ID3D11Texture2D * (적절한 ArraySize 값 포함)에 함께 묶는 방법이 있습니까? ?DirectX 11 Texture2DArray에 여러 텍스처로드하기

적어도, ArraySize를 1보다 크게 설정 한 후에 새 ID3D11Texture2D 객체를 만들 때 어떻게 개별 텍스처를 전달합니까? CreateTexture2D 함수에 텍스처를 각각 가리키는 SUBRESOURCE_DATA 구조체의 배열을 전달해야합니까? 나는 이것에 대한 해답을 찾고 있었지만, 문서는 심각하게 부족한 것처럼 보인다.

도움을 주셔서 감사합니다.

답변

3

텍스처 배열에 기존 텍스처를 복사하려면 아래에 설명 된 대상 하위 리소스 인덱스를 사용하여 CopySubresourceRegion을 사용할 수 있습니다.

초기 데이터로 새 텍스처 배열을 만들려면 SUBRESOURCE_DATA 구조체의 배열을 사용하여 여러 하위 리소스 (배열 슬라이스/밉 레벨)를 지정합니다. 서브 리소스 인덱스는 mip slice + array slice * mip leves으로 정의됩니다.

[0]: slice 0 mip 0 
[1]: slice 0 mip 1 
[2]: slice 0 mip 2 
[3]: slice 1 mip 0 
[4]: slice 1 mip 1 
[5]: slice 1 mip 2 

이것은 다음 페이지에 자세히 설명되어 있습니다 : http://msdn.microsoft.com/en-us/library/windows/desktop/ff476901(v=vs.85).aspx 그래서 2 조각 3 MIP 텍스처 배열에 대해 다음과 같은 하위 자원있을 것입니다.

+0

내가 찾고있는 것처럼 보입니다! 하지만 분명히하기 위해 텍스쳐의 각 밉 레벨을 배열 텍스처로 한 번에 하나씩 복사해야합니다 (각 대상 인덱스에 1을 추가해야합니다) – Mrfence97

+0

CopySubresourceRegion 접근 방식을 사용한다면 예, 한 번에 하나의 하위 리소스를 복사해야합니다. 그러나이 경우 배열 리소스를 사용하여 복사를 피할 수 있도록 시작해야합니다. – MooseBoys