Make - Old Tail 2014. 7. 4. 20:51
728x90

 

어떤 버그

 

 

셰이더 매니져에서

std::string 으로 선언된 문자열로,
문자열에 해당하는 이름의 fx 파일을 찾는 도중,

크래쉬나는 현상이 발생.

 

음,

왜 이렇지?

디버거를 돌려봐도, 그냥 stl 의 힙메모리 체크에서
뻑이 난다는 것만을 알 수 있었다.

 

음,
이미 수천, 수만번을 사용하던 코드인데,
갑자기 이런 현상이??

 

처음에는 쓰레드 관련 버그일 것이라,
추측하고,
관련 코드를 검사해 보았으나,
별 이상을 발견할 수 없었다.

 

쩝, 할수없지

귀찮지만,

 

소거법을 사용할 수 밖에....

 

조금이라도 의심가는 코드는 주석처리 하거나,
return 처리하여,
크래쉬 나지 않는 상태를 만들었다.

 

그리고,

 

다시 주석처리하거나 막은 코드를 원상태로 복구하며,
스텝 바이 스텝으로 실행시키며 체크


어라라


 

지형의 스플래팅 처리에서
알파값을 셋팅하는 루프가 뭔가 문제가 있음을 발견.

 

이미지 파일의 픽셀값을 얻어오는 함수 본문에,
주석처리와 설명이 붙어 있었다.
( 이전에 내가 작업하면서 뭔가 바꾸어 놓은 부분이었다,
이미 몇달 전에 작업해 둔것이라 기억이 날리가 없다.... )

 

이미지 버퍼에서
인덱스 구하는 것이 잘못되어,
특정 경우에,
이미지버퍼가 오버런되는 것을 발견하였다.

 

그러니,

다른 힙영역을 건드려서,
예상이 힘든
곳에서 문제가 발생하는 것이었다.


쩌쩝

 

그래,

 

뭔가 이런 것일것 같았어.
ㅎㅎ

 

어쨋든 원인을 알았으니, 수정!


관련 코드 중에,
맵툴의 알파 에디트 인터페이스가
이전부터 좀 마음에 걸렸었는데,
보던 김에,
찬찬히 훑어 보았다.


지형의 스플래팅 처리에서,
이미지 레이어들을 겹치고,
알파를 빼는 인터페이스에서,

 

마우스 커서의 지정 위치와
알파 이미지 영역과
딱 맞지 않아서,
원하는 영역을 정확하게 그릴 수 없던 부분이었다.

 

 

코드를 보니,

하도 예전에 작업했던 부분이라,
잘 기억도 안나고,


변수 이름이나, 처리가 중복된 것들이
거슬려,
그냥 싹 다지워 버렸다.

 

좀 심플하게 다시 다듬자.


다시 작업을 착착착

 

그러다보니,

알파레이어의 이미지 구성( 크기 ) 등을 어떻게 셋팅했는지
기억이 가물가물,
 
찾아보니,

128 크기의 타일에 2x2 사이즈로 사용하고 있던 것을 발견.


음, 좀 더 사이즈 늘리면
알파 처리가 더 디테일해 지겠구나 라는 생각이 들어서,
알파 이미지 생성 함수를 찾아서,
사이즈를 늘렸다.


사이즈를 늘이고 테스트 해보니,


한 타일당 커진 사이즈에 해당하는 모든 픽셀을 찾아서
알파값을 셋팅해 주어야 하는 처리가 추가되어야 했고,


추가후

테스트 중에,


굳이
타일 단위로 알파값을 줄 필요가 없다는
생각에 도달했다.


어라라


....

 

그랬다

지형의 알파 이미지를 만들때,
꼭 타일 단위로 알파 이미지를 에디트 할 필요는 없는 것이었다.



디딩....

 


뭐, 어쨋든
전체 타일을 덮는 알파이미지를 만들고,
타일이 아닌,

월드 좌표에 해당하는 알파이미지의 픽셀을 가져와서,

적절하게 에디트 해놓으면 끝.


맵툴의
알파이미지의 픽셀을 에디트 하는 부분을
타일 단위에서
마우스 커서 픽킹위치로부터의 영역처리로 바꾸었다.


결과는!?


좋다.


이제 타일에 free Drawing 을 할수 있다.


ㅋㅋㅋ;;;

 

이렇게~

 

 

 

 

 

 

로켓트를 그린 것이다!

 

 

 

728x90

'Make - Old Tail' 카테고리의 다른 글

나는 오늘도 알파를 뺀다  (5) 2014.07.10
나공간 시작 화면  (9) 2014.07.07
지형 노말맵 적용 테스트 - 03  (0) 2014.07.01
지형 노말맵 적용 테스트 - 02  (0) 2014.06.29
지형 노말맵 적용 테스트  (0) 2014.06.27
posted by BK dddDang
: