Pergunta

A documentação implica que você pode ter de renderização 3D ou modo framebuffer, e cada um apenas para a exibição ativa. Existe alguma maneira para tornar 3D para uma tela e framebuffer para o outro?

Foi útil?

Solução

Bem, eu ouvi que há uma funcionalidade de captura de tela que permite desenhar em 3D no motor sub (tela inferior), então eu olhei para cima e encontrei um exemplo .

Infelizmente as macros DCAP não parece ser documentado, então eu tinha um olhar para os define reais 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)

Para minha mente fraca parece que você pode capturar 3D, desenhá-la no sub e usar o frame buffer na principal se você quiser. Para ser capaz de usar o framebuffer no motor sub você precisa trocar as telas com lcdSwap().

Outras dicas

Não inteiramente certo o que sua necessidade é, mas utilizando 3D no motor principal do display ainda deixa o motor inteiro sub fazer framebuffer (ou qualquer outro 2D) Tipo gráficos (utilizando um fundo de rotação estendida por exemplo).

Se você quer dizer usar o modo framebuffer a saída de captura do motor 3D de modo que você pode render 3D para ambas as telas, em seguida, há um exemplo nos exemplos libnds pasta que faz exatamente isso:

http://libnds.devkitpro.org/a00035.html

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top