작동을 안 하던 녀석이 지금 작동해서 상당히 기분이 좋습니다.
엔진은 OpenGL을 사용합니다. 근데 이제 SDL을 약간 곁들인.
따라서 texture 의 렌더링 또한 OpenGL에서 texture 를 생성하고 이를 GL_TEXTURE_2D에 바인딩 시켜줍니다.
부차적인 위치 정보나 뭐 그런 것들은 shader (glsl) 과 uniform을 사용 하여 처리하였습니다.
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가 되니까 해결 한 방법을 적겠습니다.
그냥 surface 의 format 을 RGBA8888 로 바꾸었습니다.
끼얏-호우
아무튼 작동 했으니 제 승리입니다.
감사합니다.
왕고수ㄷㄷ..
sdl을 원래는 r8에만 저장했어서 렌더러랑 호환문제로 글리치 발생했던건가? 요즘 보기드문 Raw한 프로그래머네 - dc App
이런 알찬 글은 고닉파서 올려주면 안됨? 방금 검색해서 1,2 다 읽고 오긴 했는데 검색 넘 귀찮아
뭐 하시는 분입니까? 고수님.
신기하네여 그럼 sdl/ttf라이브러리의 서피스 픽셀포맷이 디폴트가 다른건가여? rgba32 가 아닌건 폰트쪽인가요? 궁금하네요