DS에서 3D 및 프레임 버퍼 모드를 결합합니다
-
06-07-2019 - |
문제
문서는 3D 렌더링 또는 프레임 버퍼 모드를 가질 수 있고 각각 활성 디스플레이에만 가능 함을 의미합니다. 3D에서 한 화면으로 렌더링하고 프레임 버퍼를 다른 화면으로 렌더링하는 방법이 있습니까?
해결책
글쎄, 나는 서브 엔진 (하단 화면)에 3D를 그릴 수있는 디스플레이 캡처 기능이 있다고 들었습니다. 예시.
슬프게도 DCAP
매크로는 문서화되지 않은 것 같아서 실제 정의를 살펴 보았습니다. NDS/ARM9/video.h:
// Display capture control
#define REG_DISPCAPCNT (*(vu32*)0x04000064)
#define REG_DISP_MMEM_FIFO (*(vu32*)0x04000068)
#define DCAP_ENABLE BIT(31)
#define DCAP_MODE(n) (((n) & 3) << 29)
#define DCAP_DST(n) (((n) & 3) << 26)
#define DCAP_SRC(n) (((n) & 3) << 24)
#define DCAP_SIZE(n) (((n) & 3) << 20)
#define DCAP_OFFSET(n) (((n) & 3) << 18)
#define DCAP_BANK(n) (((n) & 3) << 16)
#define DCAP_B(n) (((n) & 0x1F) << 8)
#define DCAP_A(n) (((n) & 0x1F) << 0)
내 연약한 마음에 3D를 캡처하고 서브에 그려 원하는 경우 메인의 프레임 버퍼를 사용할 수있는 것처럼 보입니다. 서브 엔진에서 프레임 버퍼를 사용할 수 있으려면 화면을 lcdSwap()
.
다른 팁
당신의 필요가 무엇인지 확실하지는 않지만 메인 디스플레이 엔진에서 3D를 활용하면 여전히 전체 서브 엔진이 프레임 버퍼 (또는 다른 2D) 유형 그래픽 (예 : 확장 된 회전 배경 사용)을 수행합니다.
프레임 버퍼 모드를 사용하여 3D 엔진에서 출력을 캡처하여 두 화면으로 3D를 렌더링 할 수 있으면 Libnds 예제 폴더에 다음을 수행하는 예제가 있습니다.
제휴하지 않습니다 StackOverflow