스크린샷
























오랜만에 하는 릴리즈입니다. 거의 2년만이군요.

주요 변경점은 "폰트렌더러"가 포함되었습니다.

기타 자잘한 버그 수정이나 기능상 변경사항이 있습니다.

그에 대한 리스트는 귀찮으니 생략.... 하겠습니다.

문서화까지 해서 릴리즈 할려고 했으나 워낙 방대하고 귀찮은 관계로 언제 끝날지 몰라 그냥 릴리즈 합니다.

자세한건 아래를 참고하시기 바랍니다.

데모




svn 체크아웃 주소

trac 로드맵


다음 버전에서는 여러가지 컨트롤 (파일열기 및 저장, 폴더 선택, 달력, 체크박스 리스트, 링크 스태틱, 트리뷰, 메뉴, 팝업메뉴, 컬러 선택 등)이 포함 될 예정입니다.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2009/07/26 16:02 2009/07/26 16:02
나름 삽질을 통하여 Glow 효과를 구현 했다.
Glow를 출력 할 때 몇가지 파라메터가 있는데 다음과 같다.

GlowDepth : 최대로 Glow가 퍼질 거리
GlowFactor : 브러시 밀도 Factor
GlowBrightness : 최대 밝기
일단 저렇게 파라메터를 주게 해놨는데 정작 가장 예쁘게 나올수 있는 값들은 잘 모르겠다는거..

적당히 아래와 같이 주니 그 아래와 같은 그림이 나온다..

GlowDepth = 2
GlowFactor = 1.398
GlowBrightness = 1.3

사용자 삽입 이미지

클릭하세요
























얼마나 적절하고 예쁘게 나올지는 디자이너의 영역이니 패스~

이제 남은건 그림자와 외곽선.. 외곽선이 좀 문젠데...
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2009/04/28 17:56 2009/04/28 17:56
이런 시버먹을넘의 freetype님..

내가 멍청해서 이해를 못하는 것일까요. 아니면 글꼴 만는놈이 문제인걸까요. 아니면 님하가 문제인가요.

폰트제작에 대한 책을 좀 사서 봐야하나..

freetype으로 글꼴 출력하기 한번 힘들구나...

Glyph Matrix가 젤로 헷갈렸어요.

어떻게 해서 대략 되긴했는데..

난 제일 이해가 안가는게 왜 ascender값이 특정 폰트 크기에서 1픽셀씩 삑사리나고 ㅈㄹ인거냐고..

orig값을 찾기 위해 계산한 값이 내가 생각하기로는 정확한데 왜 삑사리가 나는지 모르겠다.

여튼 아래와 같은 방식으로 미리 렌더링된 폰트를 가지고 텍스처의 옵셋을 이용하여 화면에 출력할 예정이다.
대략 아래와 같은 텍스처와 옵셋정보를 파일로 저장하고 불러오는 기능도 만들까 생각중이다.
그러면 처음 구동시 텍스처에 폰트를 그리는 로드는 많이 줄어들 것이다.

대충 중간선과 밑줄까지는 구현했고.. 젤로 귀찮은 그림자와 글로우, 테두리가 남았다.
원래는 이텔릭체는 구현 안할려고 했는데(이텔릭체라는것이 그릴려는 폰트의 크기를 넘어서서 렌더링이 되므로 처음에 구상했던 방식하고 좀 안맞아서) 이번에 구현한 방식이 이텔릭체와 같이 기본 크기를 넘어서도 되도록(사실은 미처 몰랐다가 구현하다가 깨달았다능..) 구현이 되었으므로 이텔릭체도 지원할까 생각만 중이다.

위에서 언급한 그림자와 글로우는 멀티패스로 렌더링할 예정이다. 즉, 원래 글자와 글로우, 그림자를 각기 분리하여 렌더링하여 아래 그림과 같이 텍스처에 저장후 최종 렌더링 할때 합성해서 보여줄 예정이다. 사실 미리 때려박아도 되긴 하는데... 너무 오래되서 몰랐는데 내가 글로우와 그림자의 색상을 실시간으로 변경 할 수 있게 설계를 해놨더라...그래서 별수 없이 분리하여 멀티패스로 할 예정이다. 그러고보니 글자 배경도 실시간으로 변경 할 수 있게 해놨더라..


사용자 삽입 이미지

클릭하세요

























ps. 어라.. 원래 이곳이 없었던거 같은데.. 여튼 이곳에서 좌표에 대해서 잘 설명하니 다시 읽어봐야겠다.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2009/04/26 02:31 2009/04/26 02:31

svn 저장소 세팅..

생활 : 2008/08/28 23:25
저번에 동아리 개발서버 하드가 사망하시는 바람에 dcgui의 저장소가 홀랑 날아가는 일이 있었습니다.

다행이 전에 저장소를 덤프 받아놓은 것이 있어서 잠도 안와서 저장소 세팅을 다시 했습니다.

사실 날아간지는 좀 됬지만..

귀차니즘으로 인해서 이제야 세팅을 마쳤네요..

주소는 조금 바뀌었습니다.

일단 커밋은 svn+ssh 프로토콜로 할것이고 익명 체크아웃은 http 프로토콜을 이용합니다.

http://dev.dalmuri.net/repos/chadr/Chadr/DCGUI/tags/ 에 릴리즈된 목록들이 있습니다.

그 상위에 여러가지가 있지만 받아보셔도 상관 없습니다.

일단 회사 생활이 끝나면 개발을 재개할 예정(....)입니다..
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2008/08/28 23:25 2008/08/28 23:25
DCGUI 개발을 계속 진행해야하는데..

귀차니즘이 크나큰 문제..

놀러가고 싶어염.. 여행가고 싶어염.. 누구랑 같이..
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2008/05/03 21:51 2008/05/03 21:51
열심히 달리고 있습니다..
어제와 오늘 작업해서 기본적인 폰트와 글리프 매니징을 하고..
굵게, 밑줄과 가운데선을 렌더링 하는 부분까지 작업을 했네요..

이제 남은건 글로우와 그림자렌더링을 하고..

나머지 배경색, 정렬, 글자색 등을 적용하여 최종 텍스쳐에 렌더링을 하고
이를 매니징해서 화면에 출력하는 부분이 남았네요..

네.  맞습니다.. 사실 텍스쳐에 렌더링하고 화면에 표시하는게 중요하죠 ㄱ-

오랜만에 머리 좀 쓸려고 했더만 머리가 아프네요.. 덜덜

저는 슬슬 저녁을 먹을 준비를 해야겠군요..

어제 저녁부터 지금까지 아무곳도 안먹었더니 배고프네요 ㄱ-

(이래서 집에서는 코딩 안할려고 합니다.. 누가 암말도 안하면 밥도 안먹고 마음이 풀릴때까지 코딩을 하니 완전 폐인되죠 ㄱ-)
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2007/06/23 16:35 2007/06/23 16:35
#include <math.h>
#include <stdio.h>

void main()

  float a = 1.398f;//표준편차
  float x = 0.0f;//x값
  float xInc = 0.35f;//x의 증가값
  int nMax = 10;//생성할 최대 개수
 
  for (int i = 0; i < nMax; i++)
  {
    float re = exp(float(-((x*x)/2*(a*a))));   

    printf("i : %d, %f\n", i, re);

    x += xInc;

  } 

}

이걸로 계산 해봤는데 그럭저럭 괜찮은 값들이 뽑힌다.. 이 함수로 사용해야지..

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2007/06/17 18:00 2007/06/17 18:00
사용자 삽입 이미지


UML은 처음 써보는데 기호를 맞게 쓴건지 모르겠네요 ㄱ-

여튼 위의 구조를 가질 예정입니다.. 어디까지 예정이므로 다 뒤집어질수도 있습니다 ㅋㅋ

위의 구조를 다시 한번 면밀히 검도해 보고 계속 작업을 진행해야겠습니다.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2007/06/17 14:43 2007/06/17 14:43
생성시 고정
글자크기
외곽선
Glow깊이
그림자(방향,깊이)

동적으로 적용가능
글자색
바탕색
굵게
밑줄
가운데선
그림자색깔
정렬
싱글라인,멀티라인

저렇게 구분한 이유는 텍스트를 효율적으로 렌더링 하기 위해 글자의 최종 높이에 영향을 주는 옵션을 기준으로 나눴습니다.

텍스쳐 하나에 한번에 한줄에 텍스트가 들어가기 때문에 캐싱을 효율적이고 간단하게 하기 위해서는 높이 값이 고정이 되어야합니다.

글자크기는 당연히 높이에 영향이 가고..
외곽선은 기본 폰트보다 적당히 비율을 가지고 들어가기 때문에 원래의 폰트 크기보다 더 커지게 됩니다.
밑줄 또한 높이가 약간 높아지게 되며.. 가운데선은 사실 안넣어도 되지만.. 이것만 따로 동적으로 적용하기가 좀 이상해서 ㄱ- 걍 넣었습니다.
이탤릭체 또한 변한다면 넓이가 변하지 높이가 변하는건 아니지만 위와 같이 따로 있으면 뻘줌할거 같아서 고정으로 배치 했습니다.
그리고 Glow의 경우에는 깊이에 따라서 심하게 원래 크기보다 높이가 변하기 때문에 고정으로 배치했습니다. 그림자로 마찬가지입니다.

고정값은 동적으로 변할 필요가 없으므로 처음 사용하는 glyph의 경우에는 글자를 렌더링하고 효과를 주느라 살짝 느리겠지만 그 후부터는 캐싱을 하기 때문에 post process가 필요 없으므로 빠르게 렌더링이 됩니다.

ps. 정정합니다. 이탤릭체는 실제로 쓸일이 별로 없을거 같아서 구현을 하지 않습니다. 그리고 밑줄, 가운데선은 동적으로 적용이 가능하도록 수정을 합니다.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2007/06/17 04:36 2007/06/17 04:36
사용자 삽입 이미지

Visual Studio 2005에 자체 내장 프로파일러가 있기에 한번 돌려봤다..
역시나 예상과 같이 D3DX에 내장된 폰트가 가장 오래걸렸다.(무려 30%)..

다른것도 아니고 대부분의 시간을 저게 다 처먹고 있다니.. ㄱ-
네이놈!!! 넌 좀 땅속으로 들어가줘야겠다..

ps. ID3DXFont 넌 도대체 무슨짓을 하간 그러냐 ㄱ-. 설마 렌더링하는 glyph를 매 프레임마다 텍스쳐로 생성하고 해제하는건 아니겠지? ㅠ
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2007/06/16 13:05 2007/06/16 13:05