외곽선 폰트

외곽선폰트는 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 - 너비를 알고 싶은 문자입니다.

Last updated