[Direct3D] 다른 컴퓨터에서 HLSL로드 시, 에러 발생 대처법

개발 시스템에서는 HLSL파일을 잘 읽는데, 다른 시스템에서는 돌아가지 않는 경우가 있습니다.

아마 D3DXCreateEffectFromFile와 그 형제 함수에서 발생하는데요.

문제는 반환된 에러값이 이 함수들이 반환한다고 레퍼런스에서 명시된 에러값들, 즉
- D3DERR_INVALIDCALL
- D3DXERR_INVALIDDATA
- E_OUTOFMEMORY
이들이 아닌 엉뚱한 값을 반환한다는 것입니다.


이 현상은 DirectX SDK의 버전과 관계가 있습니다.

동일하거나 상위 SDK가 설치되어 있는 시스템에서는 정상적으로 작동하나

하위 버전이나 설치되어 있지 않은 시스템에서는 원인 불명의 에러를 발생시키게 됩니다.

그렇다고 일반 사용자들에게 SDK를 설치하라는 것은 말도 안되죠.


해결법은 간단합니다. SDK가 설치된 시스템의  윈도우 디렉토리의 System32폴더를 보면

D3DCompiler_*.dll 라는 파일이 있습니다. *는 SDK버전으로 가장 큰 숫자가 빌드한 SDK가 사용하는 파일입니다.

이것을 프로그램과 같이 배포하면 되겠습니다.

재배포 패키징에서 자동으로 처리해 줄지도 모르겠네요.


아무래도 SDK버전마다 HLSL 컴파일에 사용되는 모듈이 다른게 아닐까 싶네요.



by hellz | 2011/09/21 23:37 | Programming | 트랙백 | 덧글(2)

트랙백 주소 : http://hellzblog.egloos.com/tb/3234080
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 현기쿤 at 2012/11/14 01:40
정말 덕분에 도움이 많이 되었습니다~^^ 감사합니다~~

D3DXCreateEffectFromFile가 아무 소리 없이 죽어서 휘유~~
Commented by 초보자 at 2013/03/05 05:14
감사해요~

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶