반응형
10년 넘게 프로그램을 하면서 Microsoft 의 MFC를 쓰면서 툴을 만들며 매번 느끼는 건 참 번잡하다라는 것이다.

또한 무겁다는 생각과 매번 만들면서 귀차니즘 같은 것들을 해야 하는... 회의감을 느끼면 개발을 했었다. 

물론 단순한 작업물을 만들때는 그냥 Class Wizard나 Project Wizard를 통해 기본으로 나오는 포멧으로 컴파일을 돌려 만들어도 된다. 

하지만 이것 저것 UI관련 작업을 하다보면 상속에 상속, 그리고 다양한 컨트롤들에 대한 디자인에 대한 스트래스... 등등의 한계와 촉박한 시간에 대한 스트래스가 늘 있었다.

뭐 툴을 개발하려면 늘 겪는 일이지만... 그래서 늘 wxWidgets나 QT라는 것을 써보고 싶었는데, 일년 전부터 애플의 맥으로도 프로그래밍을 하다 보니 툴개발에 있어 UI에 대한 범용성을 고려해 보게 되었다. 
 그러다 최근 wxWidgets 라는 것을 끄적이고 있는데, 이번에 간단하게 Direct3D를 연동하는 방법을 정리해 보련다. 

내가 아는 범위에서는 5가지로 정리가 되었다. 여기서 1,2 번은 동일하다고 봐도 된다. 

1. wxControl를 상속 받아 Direct3D Device를 초기화 하고 Rendering 하는 방법이 있다.
2. wxPanel를 상속 받아 Direct3D Device를 초기화 하고 Rendering 하는 방법이 있다. 
3. wxEventLoop 를 상속받아 이벤트 객체를 만들고 wxApp를 상속 받아 만든 객체에서 OnRun()에서 메세지 처리와 렌더링 함수를 호출하는 아마 MFC에서 비슷하게 했을 법한 방법으로 구현한다. 
4. 스레드를 이용한 렌더링 함수 호출 방법
5. wxFrame나 wxWindow등을 상속 받아 Timer 호출을 통한 강제 렌더링 방법

위의 방법 모두 잘 되었다. 문제는 스레드의 경우 예외 처리시 조금 고려해야 할 것이 발생할듯 싶고, 툴이라는 것을 고려하면 이벤트 호출에 대한 처리도 원활하게 되어야 하지 않을까 싶다. 
다시 말해 메세지의 흐름에 대해서 억지스럽지 않게 처리해야 한다고 본다면 1~3번 방법이 가장 효과적이라 생각이 드는데, 일정 프래임을 요구한다면 타이머나 스레드 방법을 이용한 방법이 확실하다 하겠다. 

뭐 어떤 방법이든, 기본 방법은 MFC나 wxWidgets나 다르지 않다고 본다. 다만 복잡도의 경우 wxWidgets가 좀더 단순하고 명확해 보여서 깔끔해(직관적) 보인다. 


앞서 명시한 방법중에 1, 2 의 차이는 메세지 구조다. wxWidgets의 컨트롤 마다 메세지 구조가 조금씩 다른데, 
제한된 메세지 구조와 조금 폭넓은 메세지 구조로 염두해도 되겠다. (? 사실 조금 더 디테일하게 공부를 해야 하는데
어설픈 깊이의 내용이라 은근 슬쩍 넘기라... )


우선 귀차니즘에 AllMighty님의 코드를 이용해서 여러가지 실험을 해보았는데, 스레드 방법에 대해서는 AllMighty님의 블로그에 올려진 코드를 참고하면 될듯 싶다. 

내가 구현한 방법은 AllMighty님 코드를 참고해서 wxControl를 상속한 것과 wxPanel를 상속해서 만든 객체에 삼각형이 그려지게 구현해 본것이다. 


TestX는 wxPanel를 상속한 객체에 삼각형을 그리도록 한 소스이며, TestY는 wxControl를 상속하여 삼각형을 그리도록 한 코드이다.  또한 VisualStudio 2010에서 작업한 코드이다. 

기회가 된다면 이것을 참고해서 더 훌륭한 프래임 객체를 구성해 보는 것도 wxWidgets를 배우는 입장에서는 도전해볼만하다 하겠다. ^^;

참고자료 :  1. 렌즈군의 게임공작소
                2. AllMighty님 블로그의 Direct3D(DirectX) with wxWidget 
                3. 기타 인터넷에서 wxWidgets + Direct3D 로 검색하면 나오는 자료들..

                                                                                                                  작성자 : 이준곤(LeeChen)
                                                                                                                  작성일 : 2012. 1. 3 
반응형
반응형
게임을 개발하면서 UI를 스케일폼을 이용하다 보니 플래쉬 툴이라는 것을 설치해보았다. 프로그래머 입장에서 처음 접할 때 참 막연하다. 물론 스케일폼 문서에 보면 자세히 디테일하게 설명이 되어 있다. 하지만 꼭 찝어 간단히 정리하면 좋겠다 싶어서 그냥 정리해서 작성해 본다. 

Flash CS4 를 설치하고 스케일폼 4.0 을 설치한다. 
이 부분에 대한 설명을 생략 하도록 하겠다. 설마 설치 못하시는 분이 계시진 않을 듯하고... 

첫번째, 스케일폼의 클릭(CLICK)라이브러리를 셋팅하자. 

먼저 메뉴의 Edit에서  해당 메뉴를 클릭한다. 
 
이 메뉴를 클릭하면 나오는 창에서 액션스크립트 부분을 선택후


액션스크립트 3.0 설정 버튼을 눌러서 실제 스케일폼의 클릭(CLICK) 라이브러리가 있는 폴더를 셋팅해준다. 
 

또한 자신이 직접 제작한 라이브러리 폴더 위치도 설정해주면 플래쉬 파일 생성시 해당 폴더의 라이브러리를 참조하기 때문에 여기서 필요한 폴더는 다 셋팅해주면 된다. 

액션 스크립트 2.0도 마찮가지로 전단계의 메뉴에서 골라서 셋팅을 다 해주는 센스! 필요하겠죠!

 


두번째, 액션 스크립트 뷰어를 설정해두자.  
스케일폼에서 돌아가는 것을 보기 위해서 직접 플래쉬 툴에서 뷰어를 통해 볼 수 있다. 그럴려면 먼저 스케일폼의 뷰어 툴을 설정해야 하는데, 이것은 메인메뉴의 Help(도움말) 메뉴에서 "Manage Extensions..." 메뉴를 선택한다. 

 ADOBE EXTENSION MANAGET CS4라는 창이 나오는데 여기서 Install 메뉴를 클릭하면 
파일 선택창이 나오고, 스케일폼이 설치된 폴더를 찾아가 Scaleform Extensions.exe 를 선택한다. 
 

자~ 해당 파일을 선택하면 아래 화면과 같이 보이는데, 이렇게 되면 스케일폼 뷰어 기능이 작동이 된다.  
 

세번째, 새로운 스케일폼에서 쓰일 플래쉬를 만들자
처음에 파일을 New 하면 꼭 해야 하는 일이 있다. 이것이 조금 번거롭긴 한데,  비쥬얼 스튜디오에서 프로젝트 셋팅에 해당하는 것과 비슷 하다고 보면 될 것이다. 
먼저 상단 메뉴의 File 메뉴에서 "Publish Settings..." 메뉴를 선택한다. 

 그러면 다음 창에서 스크립트에서 셋팅을 클릭후 
 
에러와 스테이지 부분에 대한 체크된 것을 없애도록 한다. 


  자~ 이렇게까지 하면 새로운 파일에서 스케일폼용 컴포넌트 제작을 진행하면 된다. 

중요한건 1, 2 단계는 플래쉬툴 설치후 처음에만 하면 되지만 3번째 단계는 새파일 생성시마다 해야 하는 것을 잊지 말도록 한다. 또한 지금 설명의 전제가 CS4와 스케일폼 4.0에 해당하는 것들이다.

자 다음에는 스케일폼을 이용한 콤포넌트를 제작해 보도록 하겠다. 어디까지나 짧막한 주요 핵심만을 정리하는 것이니 긴 내용의 글을 기대하지 말자. 
 
                                                                                                                 작성자 : 이준곤(LeeChen)
                                                                                                                 작성일 : 2011.12.30 
반응형
반응형
반응형

+ Recent posts