728x90
반응형

Program Language/OpenGL 3

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

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 < c..

[OpenGL] GLAD 설치하기

https://glad.dav1d.de/ Extensions... glad.dav1d.de Glad 받기 버전이 많았지만 3.3으로 받았음. Language는 C/C++ , Profile은 Core으로 선택. Extensions는 뭔가 했는데 선택해주지 않아도 됨. Generate를 누르면 아래와 같은 파일이 생성됨. glad.zip만 다운로드하면 된다. 압축을 해제하면 해당 파일 모두 생성된다. zip 파일을 풀어서 자신의 include 폴더로 옮기면 된다. 그리고 경로를 추가해 준다. glad.c 파일을 프로젝트에 추가한다. 에러 C1853이 발생되는데, 여기서 멘붕이 살짝 올 수 있지만, 설정을 변경해 준다. 컴파일 후, 실행하면 정상 동작한다.

[OpenGL] 비트맵 폰트 갱신

OpenGL을 사용하여 텍스트를 랜더링 할 때 Bitmap 방식을 사용하면 설정을 갱신해야 한다. wglMakeCurrent()로 갱신을 시도해보려 했지만 갱신이 되질 않았다. 한 번의 Refresh가 이뤄진 다음에야 제대로 그려졌다. 그러는 와중에 텍스트가 종류 별로 표시가 되는지 확인하려고 여러 개를 표시하니 첫 번째 텍스트만 표시되지 않았다. 작은 MOTION PTP 밑에 조금 더 큰 MOTION PTP라는 글자가 와야 하지만 생기지 않았다. 화면이 Redrawing 하면 생겨나게 된다. 그래서 wglUseFontBitmaps()를 두 번 호출하니 제대로 동작하였다. 성능에 얼마나 영향을 미칠지는 모르겠지만 갱신하는 법을 알 수 없으니 이 방법을 사용해야겠다. 전체를 새롭게 그리는 것보다 나을 듯하..

728x90
반응형