작동을 안 하던 녀석이 지금 작동해서 상당히 기분이 좋습니다.


엔진은 OpenGL을 사용합니다. 근데 이제 SDL을 약간 곁들인.


따라서 texture 의 렌더링 또한 OpenGL에서 texture 를 생성하고 이를 GL_TEXTURE_2D에 바인딩 시켜줍니다.


부차적인 위치 정보나 뭐 그런 것들은 shader (glsl) 과 uniform을 사용 하여 처리하였습니다.



a04424ad2c06782ab47e5a67ee91766dc28ff1ecdaacc7cbbf10d3c052d4d321a82c069944b01b56cd2f852226e722


render_image 함수


행렬이 학교 교육 과정에서 빠져서 사실 행렬을 정확하게 이해하고 있지는 못합니다.


선형대수학을 어느 정도 공부를 해야 이 컴퓨터 그래픽스도 잘 할텐데, 그런 지식이 전무해서 유튜브에 의지해서 "대충 이렇게 이렇게 하니까 되더라~"라는 식으로 마무리 했습니다.


나중에 시간이 나면 선형대수학이랑 shader(glsl)를 제대로 공부하고 싶은데 혹시 추천해주시는 책이나 영상 강좌 있으시다면 알려주시면 감사드리겠습니다.



아무튼, 그래서 작동은 안 하던 녀석이 뭐냐.


텍스트의 렌더링입니다. 예, 글자 쓰는 거요


이게 참 골 때리는게 OpenGL glsl 을 활용하면서 texture를 띄우려면 vertex array 생성하고 buffer object 생성하고 element buffer object 도 필요에 따라 바인딩 하고 또 texture 를 생성하고 이걸 bind 걸어주고 uniform 설정하고 아무튼 그 긴거를 해야하는데


막상 텍스트를 그리려고 하니까 OpenGL에서 자체적으로 지원을 안 해주었습니다.


그럼 그렇지 하면서 SDL을 활용하여 TTF 라이브러리를 사용하기로 하였습니다.


문제는 이 SDL과 TTF 를 활용해서 SDL Renderer 에 Blit 하면 OpenGL 과 SDL 의 renderer 가 충돌하면서 이상한 글리치 현상이 발생했습니다.


그래서 이 SDL Surface 의 pixel 을 가지고 OpenGL로 렌더링을 해보려고 별 짓을 했는데 안됐습니다.


핵심은 작동을 안 했다는 겁니다. 3일동안. 알 수 없는 픽셀 덩어리만 뱉고 renderer가 죽어버렸습니다.


3일 동안 한 짓을 너무 세세하게 쓰면 너무 TMI가 되니까 해결 한 방법을 적겠습니다.


a04424ad2c06782ab47e5a67ee91766dc28ff1ecdaacc7cbbf10d3c65ed5d321f1a28995d50625b7a3f3cb768585


그냥 surface 의 format 을 RGBA8888 로 바꾸었습니다.



a04424ad2c06782ab47e5a67ee91766dc28ff1ecdaacc7cbbf10d3c653d4df21d0a6c4f3bfe0af5ff1e8be65d144


끼얏-호우


아무튼 작동 했으니 제 승리입니다.


감사합니다.