어제 오늘 열심히 삽질해서 GUI라고 부를 수 있는 기능을 넣었습니다. 아래는 데모 화면입니다. ㅎㅎ 고전인 Hello World를 한번 넣어봤습니다. @0@)-b
사용자 삽입 이미지
 
 일단 만들긴 만들었는데... 이게 알고리즘이 후지다보니 굉장히 느리군요. ㅠㅠ 특히 큰 윈도우가 겹쳐져서 이동하는 경우, Draw를 상당히 많이 해야되서 거의 죽음입니다. ㅠㅠ 이거 무슨 수를 내던지 해야겠군요. 나름대로 적은 부분만 그릴려고 노력했는데... 아직은 역.부.족. ㅎㅎ

 어휴... 벌써 4시... ㅠㅠ 비빔면이나 하나 먹고 자야겠습니다. 내일은 꼭 어떻게든 속도를... ㅠㅠ)-b


아유... 이것 참... 머리가 아픕니다. ㅠㅠ GUI Architecture를 구상하고있는데 어떤 것이 더 간단하고 효과적일지 고민하고 있습니다. GUI를 구현하는 방법에는 여러가지가 있겠지만 크게 아래와 같이 세가지를 생각하고 있습니다.

  1. 윈도우를 그릴때 Application에서 직접 Graphic Buffer에 접근해서 그린다.
  2. Window Manager가 Application의 Draw 함수를 호출해서 Serialize 해서 그린다. 즉 Kernel이 개별 Application의 함수를 호출한다.
  3. Application은 자신의 윈도우를 위한 임시 Graphic Buffer를 가지고 있고, 다 그리고 난 후 Graphic Buffer로 바로 복사해준다.

 1번처럼 구현하는 것이 가장 효과적일 것 같은데, 가장 마음에 걸리는 부분이 윈도우 겹침 처리더군요. 각 Application이 그리는 시간이 틀릴텐데, 마구잡이로 그리다가는 겹치는 부분에 대한 처리가 정상적으로 될 것 같지 않더군요. 아우... ㅠㅠ

 일단 좀 고민을 더 해봐야겠습니다. ㅠㅠ 어흑... 정말 산 넘어 산이군요.

ps) 혹시 Linux나 Windows의 GUI 구현에 대한 문서가 나온 게 있나요? 혹시 보신분 있으시면 덧글로 제보 부탁드립니다. ㅠㅠ


+ Recent posts