Notice
Recent Posts
Recent Comments
Link
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Tags
more
Archives
Today
Total
관리 메뉴

Visual Studio

[Vulkan] Cubemap Texture 로드시 주의사항들 본문

Graphics

[Vulkan] Cubemap Texture 로드시 주의사항들

emacser 2024. 11. 18. 01:32

Vulkan에서 Descriptor를 추가하여 사용할 수 있도록 Texture를 로드하여 준비하는 과정은 다음과 같다.

 

1. Staging Buffer를 생성한다. (이미지에 픽셀 데이터를 복사하기 위한 임시 버퍼)

2. vkMapMemory() 함수로 Staging Buffer의 가상 주소를 포인터에 저장한다.

3. memcpy 함수로 이미지를 Staging Buffer의 메모리에 복사한다.

4. vkUnmapMemory() 함수로 매핑한 가상 주소를 해제한다.

5. Image를 생성한다.

6. vkCmdPipelineBarrier() 함수로 이미지의 레이아웃을 VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL로 변경한다.

7. vkCmdCopyBufferToImage() 함수로 버퍼 안의 데이터를 이미지로 복사한다.

8. 이미지의 레이아웃을 VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL로 변경한다.
(6-8의 과정은 Command Buffer를 생성하여 진행하게 되는데, 이때 생성하는 Command Buffer를 One-time Command Buffer 라고 부르기도 한다.)

 

Cubemap Texture를 로드할 경우에는 아래 작업들이 추가로 요구되는데, 검색으로 찾기 쉽지 않은 정보라서 기록해둔다.

 

1. Image 생성시 Flags에 VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT 추가하기

2. Image View 생성시 viewType은 VK_IMAGE_VIEW_TYPE_CUBE으로, layerCount는 6으로 설정하기

3. Image Barrier 생성시에도 layerCount 값을 6으로 설정하기

4. CopyRegion 설정시에도 동일한 layerCount 값을 넣어주기