Nintendo DS Homebrew의 알파 블렌딩 스프라이트
-
08-06-2019 - |
문제
스프라이트와 배경을 알파 블렌딩하려고 합니다. devkitPro (libnds, libarm 등 포함)
이 작업을 수행하는 방법을 아는 사람이 있습니까?
해결책
일반적인 참조로서, 나는 한때 다음과 같이 썼습니다. 작은 블로그 항목 그 문제에 대해서.기본적으로 먼저 어떤 레이어가 다른 레이어에 대해 알파 블렌딩되는지 정의해야 합니다.아파익,
- 일부 혼합을 표시하려면 소스 레이어가 대상 레이어 위에 있어야 합니다.이는 소스 레이어의 우선순위가 대상 레이어의 우선순위보다 수치적으로 낮아야 함을 의미합니다.
- 소스 레이어는 반투명하게 될 부분이고, 대상은 통해 보여질 부분입니다(그렇습니다. 다소 혼란스럽습니다).
에 대한 스프라이트, 특히, 필요한 것과 "지불할 준비가 되어 있는" 금액에 따라 알파 블렌딩을 달성하는 3가지 방법이 있습니다.
- 켜서 모든 스프라이트에 알파 블렌딩을 적용할 수 있습니다.
BLEND_SRC_SPRITE
~에REG_BLDCNT[_SUB]
...그다지 유용하지 않습니다. - 다음을 사용하여 일부 스프라이트의 블렌딩을 선택적으로 켤 수 있습니다.
ATTR0_TYPE_BLENDED
.블렌딩 레벨은 모든 스프라이트(및 레이어)에 대해 동일합니다. - 비트맵 유형 스프라이트는 팔레트를 우회하여 직접 색상을 사용하므로
ATTR2_PALETTE()
GBA 스프라이트 필드는 쓸모가 없으며 재활용되었습니다.ATTR2_ALPHA
.
다른 팁
DS의 스프라이트는 다음을 사용하여 알파 블렌딩될 수 있습니다. 블렌드 제어 레지스터.TONC는 레지스터 위치가 동일하기 때문에 블렌딩 작업을 메인 화면에서 수행하는 데 필요한 정보를 제공합니다.하위 화면의 알파 블렌딩은 1000h 오프셋에서 다른 레지스터를 사용하여 동일한 프로세스를 사용합니다.
여러분이 보게 될 레지스터는 다음과 같습니다. REG_BLDMOD
, REG_COLV
, 그리고 REG_COLY
메인 화면과 REG_BLDMOD_SUB
, REG_COLV_SUB
, 그리고 REG_COLY_SUB
서브 화면용.
또한 해야 한다는 것도 기억하세요. 스프라이트의 그래픽 모드 변경 스프라이트별로 블렌딩을 활성화합니다.
그것은 긴 GBA 프로그래밍을 해본 지 꽤 시간이 지났지만, 기억나는 대로 DS는 GBA가 지원하는 대부분의 기능을 (전부는 아니더라도) 지원합니다. 이것 링크에는 GBA에 대한 알파 블렌딩을 수행하는 방법에 대한 섹션이 있습니다(섹션 13.2).DS 전용 방법이 있는지는 모르겠지만 이 방법이 도움이 될 것입니다.