2024/02 2

[게임 프레임워크 개발 일지] #18 Clipping Mask

TextInput을 구현할 때 glScissor를 사용해서 Clipping을 구현했었고, 그 외에는 SFML의 RenderTexture에서 BlendMode 같은 걸 사용했었습니다. 그런데 TextInput에 transform을 적용해서 회전하거나 비율이 달라져도 glScissor에는 적용되지 않는다는 문제를 발견했습니다. 특히 회전하는 경우에는 직사각형 형태로 클리핑할 수가 없기 때문에, 새로운 방법이 필요했습니다. 사실 SFML에는 2.0 초창기부터 Clipping Mask에 대한 기능 요구가 있었습니다만, 다른 기능들과의 호환성 문제 때문인지 Clipping Mask가 구현된 fork까지 있음에도 불구하고 적용되지 않았습니다. 근데 이걸 이제야 3.0에서 구현하고 있더군요. 그래서 깃허브에서 cli..

C++/Game 2024.02.19

[게임 프레임워크 개발 일지] #17 Window 이것저것 수정하기

지금까지 작업한 걸로 뭔가 만들어보려다 바로 에러가 나서 다시 수정할 필요성을 느꼈습니다. 1. Event mutex 처리 디버그 중에 가끔씩 프로그램을 종료할 때 mutex destroyed while busy 에러가 발생해서 알아보다가 문제를 발견했습니다. 이 에러 자체는 mutex가 lock인 상태에서 프로그램이 종료되는 등의 문제로 강제로 mutex가 삭제될 때 발생합니다. 실험을 해보니 디버그 중에만 에러 메시지가 나오고, 릴리즈 모드일 때 에러가 발생하지는 않습니다. Window를 닫는 도중에 렌더나 이벤트 호출이 발생하면 안 된다는 생각에 두 mutex를 잠그고 끄게 했는데, 메인 쓰레드에서 이벤트를 호출하는 도중에 시스템 쓰레드에서 윈도우를 종료하면 데드락이 걸려서 발생하는 문제였습니다. ..

C++/Game 2024.02.18