yuchi's Development Home
글 수 694
미뤄두었던 데칼을 마무리 지으려고 했다.
렌더러측에 데칼을 위한 컴포넌트를 끼워넣으려다보니 버텍스 버퍼를 힙메모리처럼 사용해야 할 필요가 있었다.
그래서 힙부터 만들기로 했다.힙라이브러리를 만든다면 꽤 유용하게 쓸 수 있으니까.
이전에 만든 녀석은 처음부터 어셈블리로 짠 덕에 나중에 소스를 뜯어보기가 너무 힘들었고 검색 루틴도 형편없었다.그로부터 2년의 세월이 흘러 내 스킬은 향상되어있었으므로 제대로된 힙을 만들기로 했다.
힙블럭이 크래쉬했는지, 누수가 발생했는지 체크하는 버그 체크 루틴도 넣기로 했다.
음..근데 메모리 블럭을 효율적으로 할당하기 위해선 특화된 2진트리가 필요했다.
데칼 하나 마무리 지으려다 전혀 다른 일을 하게 된 것이다.--;
다행히 이전에 만들어둔 중복처리까지 된 2진트리 검색 라이브러리가 있었다.
이 녀석을 조금 고쳐서 힙에 맞게 만들었다.
하루가 걸렸다.
이 녀석을 이용해서 범용 힙 라이브러리를 만들었다.
테스트까지 3일이 걸렸다.
그 다음에 이 힙을 이용해서 버텍스 버퍼 힙을 만들었다.
이틀이 걸렸다.
진영씨가 만든 데칼을 내가 생각한 구조에 맞게 고치기 시작했다.
다른 executive개체들과 일관된 구조를 갖게 하고 대충 돌아가게 하는데까지 하루가 걸렸다.
그리고 오늘...
이녀석을 내 생각대로 고치는게 보통일이 아님을 깨달았다.
일단 인터페이스만 만들고 일주일 넘게 만든 대량의 코드들을 테스트하는데 주력하기로 했다.
또 하루종일 코딩을 해서 테스트할 수 있는 수준까지 뜯어고쳤다.
이 무렵 내가 만든 버텍스버퍼힙이 엄청난 문제를 안고 있음을 깨달았다.
범용 메모리 힙은 바이트 단위로 할당되지만 버텍스버퍼 힙은 버텍스 사이즈 단위로 할당되어야 렌더링이 가능하다는 사실을 잊고 있었다.
1시간 정도 패닉상태에 빠졌다.
슬픔을 잊고자 2시간 정도 HALO를 플레이했다.
또한 젊은청년과 퀘이크 대전을 하며 해결방법을 모색했다.(그래서 첫판 졌다.첫판엔 버텍스버퍼힙을 고칠 방법에 대해서 생각하면서 게임했다.)
1승1패를 기록한 후 다시 키보드를 붙잡았을땐 절망은 사라지고 다시 열혈 프로그래머의 모습으로 돌아와있었다.
힙라이브러리를 고치기 시작했다.
해결책은 힙 초기화시에 단위 사이즈를 주고 할당할때 단위 사이즈에 맞춰서 할당해주도록 하는 것이다.9시경까지 불타는 코딩을 해서 테스트까지 끝냈다.
하루 진짜 빨리갔다.--;
그러니까 하려던 얘긴 이게 아니고....
이렇게 정신없이 일하는데 코룸,묵향 양쪽에서 해달라는 일이 큐에 쌓여있다는것이다.특히 묵향쪽에서 해결을 요구한 문제는 꽤나 해결하기 난감했다.어찌 해결해야할지 나도 뾰족한 수를 떠올릴 수 없다.
퇴근하고 집에 오면서 그 생각만했다.
아무래 하이트필드에 통맵 씌우는 방법을 진지하게 고려해봐야할듯하다.
미치겠군.-----------;
렌더러측에 데칼을 위한 컴포넌트를 끼워넣으려다보니 버텍스 버퍼를 힙메모리처럼 사용해야 할 필요가 있었다.
그래서 힙부터 만들기로 했다.힙라이브러리를 만든다면 꽤 유용하게 쓸 수 있으니까.
이전에 만든 녀석은 처음부터 어셈블리로 짠 덕에 나중에 소스를 뜯어보기가 너무 힘들었고 검색 루틴도 형편없었다.그로부터 2년의 세월이 흘러 내 스킬은 향상되어있었으므로 제대로된 힙을 만들기로 했다.
힙블럭이 크래쉬했는지, 누수가 발생했는지 체크하는 버그 체크 루틴도 넣기로 했다.
음..근데 메모리 블럭을 효율적으로 할당하기 위해선 특화된 2진트리가 필요했다.
데칼 하나 마무리 지으려다 전혀 다른 일을 하게 된 것이다.--;
다행히 이전에 만들어둔 중복처리까지 된 2진트리 검색 라이브러리가 있었다.
이 녀석을 조금 고쳐서 힙에 맞게 만들었다.
하루가 걸렸다.
이 녀석을 이용해서 범용 힙 라이브러리를 만들었다.
테스트까지 3일이 걸렸다.
그 다음에 이 힙을 이용해서 버텍스 버퍼 힙을 만들었다.
이틀이 걸렸다.
진영씨가 만든 데칼을 내가 생각한 구조에 맞게 고치기 시작했다.
다른 executive개체들과 일관된 구조를 갖게 하고 대충 돌아가게 하는데까지 하루가 걸렸다.
그리고 오늘...
이녀석을 내 생각대로 고치는게 보통일이 아님을 깨달았다.
일단 인터페이스만 만들고 일주일 넘게 만든 대량의 코드들을 테스트하는데 주력하기로 했다.
또 하루종일 코딩을 해서 테스트할 수 있는 수준까지 뜯어고쳤다.
이 무렵 내가 만든 버텍스버퍼힙이 엄청난 문제를 안고 있음을 깨달았다.
범용 메모리 힙은 바이트 단위로 할당되지만 버텍스버퍼 힙은 버텍스 사이즈 단위로 할당되어야 렌더링이 가능하다는 사실을 잊고 있었다.
1시간 정도 패닉상태에 빠졌다.
슬픔을 잊고자 2시간 정도 HALO를 플레이했다.
또한 젊은청년과 퀘이크 대전을 하며 해결방법을 모색했다.(그래서 첫판 졌다.첫판엔 버텍스버퍼힙을 고칠 방법에 대해서 생각하면서 게임했다.)
1승1패를 기록한 후 다시 키보드를 붙잡았을땐 절망은 사라지고 다시 열혈 프로그래머의 모습으로 돌아와있었다.
힙라이브러리를 고치기 시작했다.
해결책은 힙 초기화시에 단위 사이즈를 주고 할당할때 단위 사이즈에 맞춰서 할당해주도록 하는 것이다.9시경까지 불타는 코딩을 해서 테스트까지 끝냈다.
하루 진짜 빨리갔다.--;
그러니까 하려던 얘긴 이게 아니고....
이렇게 정신없이 일하는데 코룸,묵향 양쪽에서 해달라는 일이 큐에 쌓여있다는것이다.특히 묵향쪽에서 해결을 요구한 문제는 꽤나 해결하기 난감했다.어찌 해결해야할지 나도 뾰족한 수를 떠올릴 수 없다.
퇴근하고 집에 오면서 그 생각만했다.
아무래 하이트필드에 통맵 씌우는 방법을 진지하게 고려해봐야할듯하다.
미치겠군.-----------;