2024년 10월 22일 화요일

DirectXTex 사용법

DirectX에서 png나 jpg같은 이미지 파일로 

텍스처를 적용할 때 유용한 라이브러리



그런데 DirectX SDK 에 포함되어있지 않아

따로 이미지를 읽어 픽셀 데이터로 변환하는 작업을

 따로 해줘야 하는데 이게 그 역할인것



그냥 인터넷에 DirectXTex를 검색하면 깃 사이트가 나올텐데

그걸로 들어가서 다운받아도 되고



귀찮으면 링크로

GitHub - microsoft/DirectXTex: DirectXTex texture processing library



이렇게 다운받은 zip 파일을 아무대나 풀고 원하는 sln 파일를 실행


Desktop 2022.sln 으로 했음




프로젝트 속성에 들어가서 런타임 라이브러리를

현재 사용될 프로젝트와 맞춰서 MDd로 설정했음

이게 다르면 include 하고 링커 오류가 발생함



적용하고 Ctrl + B 누르면 빌드 되는데 


솔루션 말고 프로젝트 폴더 위치를 열면 Bin 폴더가 있음

쭉 들가서 Debug 폴더가 나올텐데 


이를 사용할 프로젝트 폴더 안에 넣거나

원하는 위치에 옮겨서 경로 지정후

Include 하면 끝



당연히 DirectXTex.h 도 옮겨줘야함 DirectXTex.inl 이거도



이미지 파일을 불러오는건 정말 쉬움


이게 끝

 ScratchImage에 이미지에 관련된 데이터가 다 있어서

2DTexture로 변환하기도 쉽다



CreateTextureEx 함수는

DirectX 네임스페이스를 사용하지만 이게 또 DirectTex꺼라서 주의해야 함

각 이미지 관련 데이터들을 매개변수로 전달하여 

ID3D11Resource 인터페이스를 채우는데


이걸로 ID3D11ShaderResourceView 생성하면 ㄹㅇ 끝

대충 설정 집어넣고 렌더링 해

c++ thread.h

 c++에서 쓰레드 돌릴려면 thread.h 헤더를 쓰면 되는데 이 친구는 쓰레드가 아직 실행 중인지, 아니면 강제 종료하거나 하는 함수가 없어서 조금 아쉬운 애다. std::thread 는 로컬 변수로 선언하든 new 동적 할당을 하든 start 함...