🔺
GLUT Tutorials
  • Introduction
  • GLUT 설정
  • GLUT 초기화
  • 윈도우 크기 변화에 대응하기
  • 애니메이션
  • 키보드입력
  • 키 입력 예제 : 세상을 둘러 보아요~ :)
  • 키 입력 예제 : 세상을 둘러 보아요~ 2 탄:)
  • 마우스처리
  • 팝업메뉴의 소개
  • 서브(sub, 하위)메뉴
  • 메뉴 수정하기
  • 메뉴 교체하기
  • 비트맵폰트
  • 비트맵폰트와 직교투영
  • 외곽선 폰트
  • 초당프레임수(FPS) 계산하기
  • 게임모드에 대해서
  • 보조창(subwindow)에 대해서
  • 보조창의 크기변환 처리
  • 여러 보조창에 렌더링하기
Powered by GitBook
On this page

Was this helpful?

외곽선 폰트

외곽선폰트는 3D 입체폰트로 비트맵폰트와는 다르게 회전변환, 크기변환이 가능합니다. 물론 이동변환도 가능하죠.

이번 장에서는 외곽선폰트를 화면에 출력해주는 GLUT 의 함수에 대해서 알아보겠습니다. 간단하게 glutStrokeCharacter 함수 하나만 사용하면 됩니다. 다음은 이 함수의 설명입니다.:

void glutStrokeCharacter(void *font, int character) 

인자 설명:
font - 사용하려는 폰트의 이름입니다.(설정할 수 있는 값은 아래를 참고하세요.)
character - 문자, 숫자, 기호 등등. 렌더링을 할 것입니다.

다음은 font 인자에 설정할 수 있는 값입니다.:

  • GLUT_STROKE_ROMAN

  • GLUT_STROKE_MONO_ROMAN (고정폭폰트: 104.76 단위 너비).

다음에 나오는 코드는 glutStrokeCharacter 함수를 사용하는 예로 현재 지역좌표위치에 문자 한개를 출력합니다.

glutStrokeCharacter(GLUT_HELVETICA_18,'3');

비트맵폰트와는 다르게 외곽선폰트를 출력하는 위치는 다른 그래픽컬 프리미티브를 그리는 것처럼 정합니다. 즉, 이동, 회전, 크기변환을 사용하는 것입니다. 다음 함수는 지역월드좌표계의 특정 위치에서 문자열을 출력하는 함수입니다.

void renderBitmapString(float x, float y, float z, void *font, char *string)
{ 
    char *c;
    glPushMatrix();
        glTranslatef(x, y,z);
        for (c=string; *c != '\0'; c++)
        {
            glutStrokeCharacter(font, *c);
        }
    glPopMatrix();
}

주의: GLUT 는 외곽선폰트를 그릴 때 여러개의 선분을 이용하기 때문에 glLineWidth 함수를 사용해서 선분의 굵기를 조절할 수 있습니다. 이 함수는 선분의 굵기를 나타내는 float 형 값만 인자로 받습니다. Viasul C 프로젝트 파일( glutstrokefont.zip ) 을 받아서 실행해 보세요. 이 예제는 폰트를 선택할 수 있도록 팝업메뉴를 제공합니다.

GLUT 에는 비트맵폰트용으로 문자의 너비를 알려주는 함수가 있습니다. 비슷하게 외곽선폰트용으로 문자의 너비를 알려주는 함수 glutStrokeWidth 함수가 있습니다. 다음은 이 함수의 설명입니다.

int glutStrokeWidth(void *font, int character); 

인자 설명:
font - 사용하려는 폰트의 이름입니다.(설정할 수 있는 값은 위를 참고하세요.)
character - 너비를 알고 싶은 문자입니다.
Previous비트맵폰트와 직교투영Next초당프레임수(FPS) 계산하기

Last updated 5 years ago

Was this helpful?