본문 바로가기

NDS

Sprite 처리에 관해 잠깐 든 생각...

버들님 홈브류를 받아 돌려보니 코딩은 아직 못봤지만 구현된 스트라이프 처리시 내가 겪었던 문제들이 똑같이 보이는게 있었다.

1. 투명도를 가진 스트라이프의 스타일러스 인식이 투명도를 포함한다.
사용자 삽입 이미지

투명도 비율이 많아지면 배경(Magenta)을 찍어도 스트라이프를 인식하게 된다.
버들님의 탄그램 홈브류에서는 이문제 때문에 선택시 스트라이프 테투리에 실선을 표시한것 같다.
해결방법 --
스타일러스 위치 픽셀을 읽어서 Magenta(투명화 했으므로 아닐수도있다)인 경우 동작을 무시한다.
이 방법은 추가 처리 부분이 생긴다. 투명도 아래에 다른 스트라이프가 있다면 선택이 되야할것이다. 아래 스트라이프 범위지만 또 투명부분이라면?
결국 여러 처리가 쌓여간다.
막장 해결방법이라면... 스트라이프 지원 크기(32x64 32x32...)에 딱맞는 이미지만 넣음 되는거다!;;;

2. 스트라이프 생성시 번호가 부여 되는데 출력시 이 번호 순서대로 우선순위가 결정된다.
스타일러스 선택도 이순서대로 결정되는데 아래깔린 스트라이프를 선택해도 출력 우선순위는 그대로이다. 보통 인터페이스방식이라면 선택되면 제일 상위로 올라오게 한다.(요 부분은 버들님의 홈브류에는 적용되있다-아직 이부분 소스는 확인못했다)
하지만 스트라이프 생성 번호는 바뀌지않았기때문에 겹쳐있는 두 스프라이트중 아래깔린것이 번호가 우선이면 그것을 인식한다.
사용자 삽입 이미지


해결방법 --
하나 있는 순위설정은 PA_SetSpritePrio인데 스트라이프끼리라기보다 bg쪽인듯하다. 이건 아니고
버들님 소스중에 PA_SetSpriteExtPrio 있던데 뭘까. document엔 없다.
PA_CreateSprite를 다시 실행한다?
-- 선택 스프라이트와 최상위 스프라이트끼리, 3->1 / 1->3
-- 또는 선택 스프라이트를 최상위로 올리고 나머지를 뒤로 하나씩밀린다. 3->1 / 1->2 / 2->3
막장 코드일거같기도하고 아닐거같기도하다. 있던번호에 겹쳐넣는거니까.
실제 테스트로는 문제는 보이지 않았다.

뭔가 더 있었는데 기억이 안난다... 그냥 생각만을 쓴것이므로 틀린부분이 있을수도있다.
어느정도 구현해볼수있을지는 미지수...

버들님 소스 분석해보며 감탄하다가 공감된 부분이 있어 적어봅니다.
소스 몇가지는 벌써 적용해보았습니다. 막장코딩과는 다르군요...:)

간단한 거지만 Pause함수도 참고로 수정...
2008/07/21 - [NDS/NDS_Palib] - Palib - Pause

'NDS' 카테고리의 다른 글

SpriteExtPrio 함수 추가  (0) 2008.07.24
이미지 Fade In/Out  (0) 2008.07.24
약간의 진척...  (5) 2008.07.23
현재까지의 테스트 이미지  (0) 2008.07.23
FrameBuffer 예제로 비교해보는 Ndslib과 Palib  (1) 2008.07.23