이야...
내가 이런거 하는날도 있구나...
암튼 이틀간의 삽질의 결과가 너무 아까워서 이렇게 공개합니다
현재 이야기 하는건 윈도우 XP (32bit) + VS 2008 에서 입니다.
FTGL을 사용하게 위해서는 Freetype 라이브러리가 필요합니다. 각각의 링크를 따라 들어가서 라이브러리를 받습니다.
Freetype의 압축을 풀고 폴더를 확인 합니다. 본인의 감(?)에 따라 어디로 가야 우리가 원하는게 있을지 폴더를 찍어봅니다...
그렇지요... build 항목에 들어가면 OS 나 개발환경별 컴파일 플랫폼을 제공합니다. win32가 눈에 들어옵니다.
win32 아래에는 위와 같이 각 환경별로 제공하는 *.dsw 또는 *.sln이 있습니다.
많은 공개 코드를 써본건 아니자만 이것처럼 친절한 라이브러리는 처음이네요. 암튼 2008로 들어가서 생각없이 "빌드"질을 해 대시면 됩니다. 그러면 ft2312_D.lib (Debug) 와 ft2312.lib (Release)를 object/win32 아래에서 만나실 수 있습니다. 상당히 다양한 컴파일 옵션이 있습니다. 일반모드와 cpu에 따른 모드가 있는데 저는 그냥 기본적인 Debug와 Release 모드만을 사용하였습니다.
이제 재료가 다 준비 되었으니 라이브러리와 header들을 옮깁니다...
-hearder파일은 include 안에 있는 것을 모두 include폴더로 ...
-lib 들은 lib폴더로 ...
-2008의 경우는 program files/v_ s_ 9.0 폴더의 vc폴더 아래에도 넣어도 되지만 program files/windows SDKs/Windows/v6.0a 에도 가능... 특별이 gl 폴더는 v_ s_ 9.0 이 아닌 windows SDKs 아래에 있음...
이제 FTGL 컴파일을 합시다
FTGL 도 매우친철합니다. msvc 폴더를 유심히 봅니다. msvc ... microsoft visual studio... 그렇지요...
아래에 내려가면 vc 8.0 vc7.1 버젼의 환경이 있습니다. 8.0은 2005 이고 7.1은 2003 인가 그럴겁니다...
8.0을 선택하고 2008 에서 열면 무리없이 컨버젼 됩니다. 걍 컴파일 합니다. 그러면 현재위치에서 한번만 위로 올라가면 못보던 Build라는 폴더가 만들어져 있고 그곳에 다 모여 있습니다. (*.dll, *lib, 등등...)
이제 적당한 위치에 옮겨두면 OK... 사용준비 완료 입니다...
일거 같지요... ??
확실하지는 않으나 win64 bit에서는 문제가 없는데 32bit XP에서 사용하려면 문제가 발생합니다. 아마 환경에 따라서 전처리자가 결정이 안되는것 때문에 이 라이브러리로 visual studio 6.0 에서 개발하신다면 꽤나 애 먹으실 겁니다. dll에 구현되어 있는 함수가 제대로 export가 안되었을때 나오는 에러 메세지를 보게 되실겁니다. 즉,
error LNK2001: unresolved external symbol "public: virtual class FTBBox __thiscall FTFont::BBox(unsigned short const*,int,class FTPoint,class FTPoint)" (?BBox@FTFont@@UAE?AVFTBBox@@PBGHVFTPoint@@1@Z)
이와 비슷한것을 두개 더 보게 되실겁니다
(현재까지 제 경험상 winXP에서 OpenGL이 가장 원활하게 돌아갑니다. 그리고 저는 아직도 visual studio 6.0 을 못 버리고 있구요.)
다시 FTGL 컴파일 하는곳으로 돌아갑니다.
ftgl.dll 속성으로 들어가서 구성속성->c/c++->언어->wchar_t를 기본제공 형식으로 처리 를 예 에서 아니오로 바꾸고 다시 컴파일 하면 위의 문제는 사라집니다.
이건 제가 해결한건 아니고... 구글링 하다보니
http://objectmix.com/graphics/729918-ftgl-visual-studio.html
저와 동일한 문제를 안고 있던 분이 있더군요. 이자리를 질문하고 답변해준 분들께 감사의 말씀을...
FTGL을 사용하면 3D 화면상에다 글자를 2D 혹은 3D로 뿌릴 수 있고 각종폰트( 한글)도 자유자제로 쓸 수 있습니다. (OpenGL에서 글자쓰는게 만만한 일은 아닙니다. 특히 2D는... 그렇다고 DC 에다 때려 넣어서 쓰면... 3D perspective 상황에서는 글자도 안 보일겁니다.)
아뭏든 이렇게 하고 나면 깨끗한... 그리고 본인이 가장 좋아하는 영문폰트인 verdana를 써서
텍스트를 출력할 수 있습니다
이렇게 말이지요...
구글 검색을 통해서 FTGL에 관한 한글정보를 얻으신분들은 자료들이 상당히 오래 되었음을 발견하시게 될겁니다. 그래서 해보려면 상당히 많이 틀린것을 알 수있고 특히 FTGL은 함수들이 상당히 많이 바뀌어서 이 라이브러리 쓰는게 그리 녹녹하지 않았습니다.
그냥 instance하게 불러서 작업하신다면 위의같은 처리 안해도 작동합니다.
그런데 가령 위의 FTGL 객체를 class member variable로 동적할당을 하려면 위의 방법으로 하셔야 되지 않을까 합니다.
2차 출처 : http://blog.daum.net/piewani/16768994