728x90
반응형
OpenGL에서 글자를 사용하기 위해서 freetype을 사용하여 폰트의 데이터를 얻는다. 이때 얻어진 데이터는 1 Channel 데이터인 것 같다. 해당 데이터로 0이 아닌 부분에서 일일이 Pixel을 찍어서 표시하면 투명한 배경의 텍스트를 얻을 수 있지만 Zoom을 할 시 발생하는 문제와 함께 엄청난 부하가 발생한다.
이를 위해서 텍스쳐를 이용하면 배경이 검은색으로 표시된다.
이를 해결하기 위해서는 RGBA의 이미지 형식을 사용하면 된다.
struct Color32 {
unsigned char r;
unsigned char g;
unsigned char b;
unsigned char a;
};
for (int y = 0; y < chars.height; y++)
for (int x = 0; x < chars.width; x++)
{
int idx = chars.width * y + x;
chars.glyph.get()[idx].r = 255;// face->glyph->bitmap.buffer[chars.width * y + x];
chars.glyph.get()[idx].g = face->glyph->bitmap.buffer[chars.width * y + x];
chars.glyph.get()[idx].b = 255;// face->glyph->bitmap.buffer[chars.width * y + x];
if (chars.glyph.get()[idx].g == 0)
chars.glyph.get()[idx].a = 0;
else
chars.glyph.get()[idx].a = 255;
}
32bit 이미지를 만들어서 font 데이터를 이미지 데이터로 옮겨 준다. 데이터가 0일 때 alpha를 0으로 하고 아닐 때 255를 만들어 불투명하게 만든다.
feetype을 이용하니, 한글 영문 모두 사용하여 표현할 수 있게 된다.
728x90
반응형
'Program Language > OpenGL' 카테고리의 다른 글
[OpenGL] GLAD 설치하기 (0) | 2022.08.29 |
---|---|
[OpenGL] 비트맵 폰트 갱신 (0) | 2021.12.08 |