Program Language/OpenGL

[OpenGL] 텍스트의 검은 배경 없애기

야곰야곰+책벌레 2022. 8. 31. 13:14
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