유니티 실행 시 그래픽 라이브러리 선택하기. OpenGL이냐 DirectX냐 그것이 문제로다 UNITY3D

여러분들도 아시다시피 유니티는 멀티플랫폼 엔진입니다. 그러다보니 당연히 빌드 결과물 외 에디터에서도 OpenGL과 DirectX 둘 다 지원을 합니다. 하지만 유니티를 실행하면 기본적으로는 실행 OS에 맞게 기본적으로 그래픽 API를 설정해줍니다. 즉, MAC이나 Linux로 수행하면 OpenGL모드로, MS Windows에서 수행하면 DirextX모드로 실행됩니다. 


OpenGL 모드 강제 지정

사실, 미미한 차이긴 하지만 OpenGL과 DirectX의 렌더링 결과가 다르긴 합니다. (프로그래머는 몰라요. 아티스트의 매의 눈으로 봐야 알아요;;) 따라서 개발하다보면 에디터에서도 OpenGL모드로 보면서 작업하고 싶을때가 있습니다. Windows에서도 OpenGL 모드로 보여줄 수 있습니다만 유니티 메뉴의 설정 창 어디에서 이를 변환해주는 항목은 존재하지 않습니다. 유니티 수행 시 커맨드라인 실행 인자로 "-force-opengl"을 주면 OpenGL 모드로 수행됩니다. 매번 cmd로 커맨드라인 열어서 수행하실 필요는 없고 바로가기에 인자로 추가해주시면 됩니다. Unity바로가기 아이콘 우클릭하신후, 대상(T) 항목의 맨 뒤에 "-force-opengl"을 붙여주시면 됩니다. 
그러고나서 유니티를 실행하면 상단 타이틀에 OpenGL모드로 수행되는중이라는 표시가 뜹니다.
마찬가지로 DirectX 9이나 DirectX11 모드로 강제 지정이 가능합니다. (자세한 내용은 공식 메뉴얼을 참고해주세요.) 


DX11 on DX9 GPU

그런데 가끔 DirectX 모드로 수행 시 화면의 색이 원래와는 다르게 나오는 경우가 존재합니다. 특히 노말맵을 쓰는 모델이 티가 많이 나는데, 확인해보면 노말맵이 전제적으로 붉은 느낌으로 변해버린 것을 발견하실 수 있습니다.
이러한 경우는 DirectX의 버젼이 맞지 않아서 발생하는 문제입니다, PC는 DirectX 9까지만 지원하는 GPU를 장착하고 있는데, 유니티는 DirectX 11 버젼으로 수행하기때문에 문제가 발생하는 것입니다. 때문에 타이틀바 상단에 DX11 on DX9 GPU라고 표시가 뜹니다.
이는 프로젝트 셋팅에서 DX11을 사용하지 않도록 설정해주면 해결이 됩니다. File > Build Settings > PC, Mac & Linux Standardalone > Player Settings > Other Settings > Use Direct3D 11 체크를 해제해주시면 됩니다.










덧글

  • 나그네 2015/10/21 02:39 # 삭제 답글

    사용하신 버전이 어떻게 되는지 모르겠지만 5.2 버전에서 보면 플레이어 설정의 Other Settings(마지막 사진)에 Auto Graphics API for Windows, Auto Graphics API for LInux 란 속성이 있네요.. 여기서 Auto Graphics API for Windows의 체크박스를 체크해제하니 리스트가 나오는데 DX11과 DX9만 선택되어져 있더군요 여기서 사용할 그래픽 API를 골르면 되더군요.. -찾는 순서는 위에서 부터 아래로 찾나 봅니다.-(디폴트로 D3D9와 D3D11만 들어있어서 에디터를 OpenGL 모드로 실행해도 빌드시 D3D9및 D3D11대응 파일로만 빌드되고 빌드된 파일실행시 -force-opengl 파라미터를 주고 실행하면 화면을 그리질 못하더군요.. OpenGL로만 빌드하려면 D3D는 리스트에서 모두 빼야 됩니다.)
    그리고 플레이어 설정은 Edit -> Project Settings -> Player로 가도 됩니다
  • 2017/05/01 02:14 # 삭제 답글

    나그네님 감사합니다
댓글 입력 영역


smallBanner

longBanner

rightSmallBanner

mobile

트위터큰거