Game Dev/Work Log

Gwen Library 설치

AKer 2012. 12. 8. 12:04
반응형

개인 프로젝트에 사용할 GUI 라이브러리를 찾고 있었다. 


http://gamedev.stackexchange.com/questions/3617/good-gui-for-opengl

http://gamedev.stackexchange.com/questions/8749/gui-for-directx


위의 링크들을 보고 우선 아래의 4개 라이브러리들을 다운 받았다.


- CEGUI : http://www.cegui.org.uk/wiki/index.php/Main_Page

- GWEN : http://code.google.com/p/gwen/

- AntTweakBar : http://www.antisphere.com/Wiki/tools:anttweakbar

- MyGUI : http://mygui.info/


이 중 MyGUI는 Ogre 엔진 플랫폼 기반이라 패스하고, CEGUI는 데모를 돌려보니 무거운것 같아서 (이런 언급도 있다.) 홈페이지에 무려 "A GUI system aimed at games."라고 설명이 되어있는 GWEN을 Integration 해보기로 했다.


VS2010+DX9를 위한 설치 및 Integration 순서는 다음과 같다.

  1. 코드를 다운 받고 압축을 푼다. (http://code.google.com/p/gwen/downloads/list)
  2. Projects\ 폴더의 BuildProjects.bat를 실행하면 windows/vs2010 폴더가 생긴다.
  3. GWEN.sln을 열고 컴파일한다. 
    1. "GWEN_STATIC"(혹은 GWEN_DLL)과 "Renderer-DirectX9" 2개의 프로젝트만 빌드하면 된다.
    2. "Renderer-DirectX9"의 프로젝트 설정을 열어서 Include/Library 경로에 현재 자신의 DX SDK 경로로 설정해준다.
    3. "GWEN_STATIC"의 경우 debug와 release의 output 파일 이름이 똑같은데 나는 debug일 경우 "GWEND-Renderer-DirectX9.lib" 파일이 빌드되도록 수정하였다.
  4. 자신의 프로그램에서 GWEN\include 폴더와 GWEN\lib\windows 폴더를 각각 참조하도록 수정한다.
위의 설정까지만 하면 GWEN을 사용할 수 있는 준비는 다 되었다. 나머지는 GWEN 공식 위키에 있는 "시작하는 방법"을 따라서 코딩하면 되는데... 사실 문서화가 너무도 부족하여 이 링크에 있는대로 하면 잘 되지 않는다. 

- 공식링크 : http://code.google.com/p/gwen/wiki/GettingStarted

먼저 stdafx.h 등 GWEN을 쓰기 위한 Header 및 Lib을 include 할 때 DX Lib을 수동으로 Link 해주어야 한다.

#ifdef _DEBUG
#pragma comment(lib, "GWEND-Renderer-DirectX9.lib") // 아까 설정한 debug 전용 Lib
#else
#pragma comment(lib, "GWEN-Renderer-DirectX9.lib")
#endif

#pragma warning(disable : 4100) // warning 제거
#include < Gwen/Renderers/DirectX9.h>
#include < Gwen/Controls/Canvas.h>
#include < Gwen/Skin.h>
#include < Gwen/Skins/Simple.h> 
#include < Gwen/Skins/TexturedBase.h>
#pragma warning(default : 4100)


그리고 RenderCanvas 함수는 (자신이 만든 렌더링 코드) DX Device의 BeginScene과 EndScene 사이에 넣어준다. 


이렇게 까지 하고 원하는 컨트롤(버튼, 텍스트 등)을 넣었다면 제대로 화면 출력이 "시도"될텐데... 나 같은 경우는 갑자기 메쉬가 알파블랜딩이 되고, 일부 Primitive가 렌더링 되지 않았다. 이유를 찾아보니... GWEN의 Rendering 시작 부분에서 DX State를 바꿔놓는데 이를 복구하는 코드가 없었다. 



뭐 라이브러리를 고치면 되는 일이기는한데 도움말도 너무 빈약하고 첫 단계부터 마음에 들지 않는 버그들을 발견하니 더 이상 이걸 쓰고 싶은 마음이 많이 사라졌다. -_-


장점이라면 코드가 간단하고, namespace 사용을 잘해서 편리하며 가볍다는건데... 일단 AntTweakBar를 한번 통합해보기로 했다. 



반응형

'Game Dev > Work Log' 카테고리의 다른 글

UTF-8 파일 만들기  (0) 2014.11.05
VS2013에서 .props 파일을 이용해서 프로젝트 관리하기  (0) 2014.08.22
Horizon Occlusion  (0) 2011.07.06
OpenProcess using Native API  (0) 2011.07.06