2013-01-01 6 views
5

나는 이미지로 시작합니다 : - 굴림, 굵게, 크기 11미운 글꼴, OpenGL을

enter image description here

위 이미지는 두 가지 방법으로 달성 텍스트를 제시, 모두 글꼴의 동일한 유형을 사용

하단의 이미지 편집 프로그램에서 만든 것이고, 내 OpenGL 응용 프로그램의 상단에있는 이미지 편집 프로그램입니다.

font_ptr font(new FTExtrudeFont(filename.c_str())); 

내 질문은, 왜 이렇게 그려된다 FTGL 라이브러리에서 FTExtrudeFont를 사용하여, 더 정확하게하려면? 그 이유는 크기 조정 알고리즘이 다를 수 있다고 생각하지만 그렇다면 OpenGL 응용 프로그램에서 어떻게 더 잘 보이는 글꼴 (맨 아래 하나)을 얻을 수 있습니까?

편집 :

font->Render(text,   // Text to be displayed 
      -1,   // Line length, which by default is left as -1 
      pos);   // Position in which to draw text 
+0

돌출 된 글꼴이 필요합니까? 일반 벡터 글꼴이나 질감이있는 글꼴을 사용해보고 더 나은 결과를 얻을 수 있습니까? – WildCrustacean

+0

@bde 질감이있는 글꼴을 사용해 보았지만,이 경우에는 날카롭고 사실적인 검은 색 윤곽선이 필요하기 때문에이 경우에 좋지 않은 앤티 앨리어스가 적용됩니다. –

답변

3

이는 OpenGL에서 텍스처 샘플링에 의해 발생 될 수 뭔가 다음과 같습니다

이 글꼴을 렌더링하기 위해,이 하나 개의 함수를 호출에만 않습니다. 드로잉 할 텍스쳐 (이 경우 폰트)가 그리는 쿼드와 크기가 같지 않을 때 발생합니다.

쉬운 해결책 : 텍스처 크기가 화면에 그려지는 영역과 일치하는지 확인하십시오. 14px 폰트를 12px 영역에 렌더링하지 말고 12px 폰트 또는 14px 영역을 사용하십시오.

귀하의 질문에 귀하의 글꼴은 '크기 11'이라고 언급합니다. 필자는 FTGL 라이브러리의 세부 사항을 알지 못하지만, 그릴 수있는 특정 문자열에 대한 최상의 차원을 알려주는 호출이 있다고 가정합니다. 이것을 계산할 때 자신의 수학을 사용하지 말고 라이브러리를 사용하십시오. 당신이 치수를 올바르게 가지고있는 한, 당신이 가지고있는 문제는 일어나서는 안됩니다.

+0

답변 주셔서 감사합니다,하지만 난 그것을 위해 렌더링 할 수있는 유일한 함수로 할 수 없다고 생각합니다 (그것은 FTGL 라이브러리에서입니다) : font-> Render (text, -1, pos); 그래서 렌더링 영역을 수정할 방법이 없다고 생각합니다. –

+0

제가 말했듯이, FTGL 라이브러리에 대해 많이 알지는 못하지만 잘못된 모델 뷰/프로젝션 매트릭스를 사용하여 정점에서 픽셀 위치로의 변환이 잘못 될 가능성이 있습니까? * 뭔가가 텍스처를 샘플링합니다. –

+0

나는 당신이 말하는 것처럼 "잘못된 modelview matrix"를 사용하고 있는지 어떻게 실제로 확인할 수 있는지 전혀 모른다. 내가 본 것으로부터 다른 모든 것들이 정확 해 보입니다. GUI 구성 요소의 배경을 그리기 위해 다른 텍스처를 사용하고 있으며 올바르게 표시되고 있습니다. 즉, 픽셀이 올바른 위치에 있음을 의미합니다. –