문제

스프라이트와 배경을 알파 블렌딩하려고 합니다. 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 전용 방법이 있는지는 모르겠지만 이 방법이 도움이 될 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top