컴퓨터와 잡동사니 자료

윈도우10 DirectX9 사용 게임에서 렉이 발생하는 문제 (d3d9.dll 문제)

K66Google 2016. 9. 7. 23:15

윈도우10 1주년 기념 업그레이드(레드스톤) 이후 DirectX9를 사용하는 일부 게임들이(illusion사 게임, 신장의 야망 13 천도 등) 렉이 걸리는 문제가 있다고 한다.

하여간 윈도우10은 정말 손이 많이 가는 운영체제다...


도대체 윈도우7, 윈도우8.1에서도 잘 돌아갔던 게임이 최신 운영체제인 윈도우10에서 버벅되는 이유는 무엇일까?




(출처: https://obsproject.com/forum/threads/weird-lag-after-the-win10-anniversary-update.52591/ )


"마이크로소프트가 또 d3d9.dll 파일을 바꿔서, 다이렉트9 게임 고성능 게임 캡쳐가 중단되었다. 고쳐질때까지 기다리는 게 좋겠어."




(출처: http://www.hongfire.com/forum/forum/hentai-lair/hentai-game-discussion/5699235-illusion-games-problems-with-windows-10-anniversary-update )


"1주년 업데이트로 일부 게임의 프레임이 아주 낮다. 그래서 나는 이 문제에 대해 논의하고 해결책을 찾아보기 위해 이 스레드를 만들었다"


hongfire 사이트에서 해결법이 벌써 나와있다. 문제를 일으킨 것은 d3d9.dll 이었다.

영어로 무언가를 줄줄히 설명하고 있는데, 굳이 저 내용을 다 번역해주기 보다는 스크린샷으로 고치는 절차를 보여주는 게 더 빠를 것 같다.



 

* 알림

만약 본인 컴퓨터가 윈도우10 1809 이상이면서 지포스 드라이버 버전이 411.70 이후라면 드라이버를 다운그레이드 하지 않고 아래의 절차를 따라할 시 게임이 실행되지 않습니다. dgVoodoo2 등의 다른 방법을 찾아보시기 바랍니다. (라데온과 인텔 내장은 상관없음)


관련 내용은 이 게시물 최하단의 '인공학원2와 지포스 400번대 드라이버의 충돌' 단락을 참조하세요.



1.


d3d9_Win10 RS1.7z


위 파일을 다운로드 받거나 https://mega.nz/#!cV9AhD7Q!Txr53k0Yc...hCEWy3WbxH_dOI 에서 d3d9.dll 파일을 받는다.

(10586 버전의 d3d9 파일이다.)





2.


옛날 방법과 새로 발견한 새 방법이 있는데 새 방법이 훨씬 간단하므로 새 방법을 따라하는 것을 추천한다.

(새 방법이 안 먹히면 그냥 옛날 방법으로 하면 된다.)


* 옛날 방법




* 새 방법

시작 메뉴 오른쪽 클릭 - '명령 프롬프트(관리자)' 실행. (※ 반드시 '관리자' 로 실행해야 한다!)


명령 프롬프트(관리자) 대신 Powershell이 있으면 Win10 RS2 기준으로 작업 표시줄 오른쪽 클릭 - '작업 표시줄 설정'에서

'시작 단추를.... Powershell로 바꾸기' 옵션을 끄면 나타난다.




* 새 방법 2 - 3.

다음과 같이 명령어 입력. (32bit는 SysWOW64를 System32로 바꿀 것.)


takeown /f "C:\Windows\SysWOW64\d3d9.dll"



위 명령어 입력 후 스샷처럼 '성공: 이제 파일 또는 폴더...' 라는 문구가 나오면 다시 아래 명령어 입력.

(마찬가지로 32bit는 SysWOW64를 System32로 바꿀 것.)


icacls C:\Windows\SysWOW64\d3d9.dll /grant Users:F


위 명령어 입력 후 '1 파일을 처리했으며...' 라는 문구가 나오면 명령 프롬프트를 종료.





10.

계속해서 C:\Windows\SysWOW64 폴더에서 (32bit 윈도우라면 C:\Windows\System32 ) 

d3d9.dll 파일을 d3d9xxxxx.dll 처럼 이름을 바꾸자. (백업을 해야 하기 때문에 이렇게 하는 것이다.)






11.


그리고 다운로드 받은 d3d9.dll 파일을 붙여넣는다.





12.

게임을 실행해본다. 버벅거리지 않고 잘 돌아간다면 성공이다.






※ 이 해결책의 알려진 문제점

이렇게 d3d9.dll을 바꿔치기 하면 fps가 원래대로 돌아오지만 XNA 기반 게임(테라리아, 스타듀밸리) 등이 실행이 되지 않는 문제가 있다.

그럴때는 d3d9.dll을 자신의 윈도우 버전과 일치하는 버전으로 복구해야 한다. (위 본문의 d3d9xxxxx.dll 파일을 다시 d3d9.dll으로 돌리면 된다.)

수동 교체가 귀찮다면 https://k66google.tistory.com/471의 프로그램을 이용해도 된다.




지포스 400번대 드라이버와 충돌

코이카츠 카페의 어느 게시물( 링크 )에 따르면 지포스 드라이버 버전이 400번대 이상일 경우 d3d9.dll을 바꾸면 게임이 드라이버 오류를 일으키며 실행되지 않는 문제가 있다고 한다. 

조사 결과 윈도우10 1809 이상 + 411.70 이후의 드라이버일 때 발생하는 문제라고 추정된다.

이때는 398.36 ~ 411.70 버전으로 롤백하거나, dgVoodoo2 라는 임시 방편을 사용해야 한다. 


지포스 드라이버 398.36 다운로드 (Win10 64bit) : https://www.nvidia.co.kr/download/driverResults.aspx/135715/kr

지포스 드라이버 411.70 다운로드 (Win10 64bit) : https://www.nvidia.co.kr/download/driverResults.aspx/138451/kr


임시 방편 (dgVoodoo2) 소개 주소 : https://k66google.tistory.com/588


하여간, 정말 손이 많이 가는 OS다. 윈도우10은...