dx11 첫 걸음

dx11_first_demo

아이폰용 뭐를 만들어보려다가 불편한 맥os, 불편한 xcode, 아스트랄한 ObjectiveC가 나를 충격과 공포로 몰아넣기에 이내 포기했다.

안그래도 DX11을 학습할것이냐 아이폰 프로그래밍을 학습할것이냐 고민했었는데 아이폰을 포기했으므로 당연히 DX11이다.

지금껏 개발한 엔진을 DX11버젼으로 포팅하기로 결정.

기존 엔진에서 DX9에 의존적인 렌더러DLL을 DX11버젼과 DX9버젼 두개로 유지하기로 했다. 인터페이스는 그대로 유지하되 DLL만 교체하면 어느쪽이든 대응할 수 있도록.

DX11 튜토리얼을 보면서 따라가는건 큰 문제가 아니었으나, 만들어놓은 엔진의 졸라 많고 복잡한 기능들을 부분부분 구현해가는건 보통 일이 아니었다.

렌더러의 모든 기능을 다 빼고 최소한의 삼각형 렌더링 기능부터 만들어넣기 시작했다.

쉐이더 매니져를 새로 만들고 리소스 관리체계를 DX11에 맞춰 다시 짜느라 몇 일 걸렸다. 드뎌 렌더링코드를 작성하고 결과를 확인! 아무것도 안나온다.–;

반나절을 날려먹고 다음날 아침이 되어서야 원인을 알아냈다.

렌더링은 정상적으로 되고 있었으나, 기존 엔진 DLL위에서 돌아가던 모델뷰어가 포스트 이펙트 처리로 렌더링을 두번에 걸쳐 하고 있었던것.

첫번째 렌더링 후 ‘화면을 클리어하지 않음’ 옵션을 설정하고 두번째 렌더링을 거는데 DX11용의 렌더러에서 이 옵션을 처리하지 않았기에 첫번째 패스의 렌더링 이후 두번째 패스에서 화면이 지워지는것이었다.

정말 모든 코드를 샅샅이 뒤지고 튜토리얼 코드를 거의 몇번이고 다시 작성해서 붙여넣기까지 했다.

내 자신이 바보라는 생각이 들고 이젠 뭘 할 수 있나..그런 생각까지 들었다.

생쇼를 하고나서 다시 코드를 정리하고 원하는대로 모델을 출력했다.

현재는 엔진의 상위단에서 넣어주는 매쉬를 흰색으로 렌더링할 뿐.

이제 조금씩 예전의 기능을 추가해서 기존 DX9엔진 정도로 쓸모있게 만들것이다.

맘같아선 DX11로 뭔가 가시적인 결과를 낸 후에나 재취업을 하고 싶다.

내 통장 잔고가 버텨줄지는 의문이지만…..

좌측이 DX9엔진에서의 모델뷰어. 우측이 만들고 있는 DX11엔진에서의 모델뷰어.


답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중