Domanda

La documentazione implica che puoi avere il rendering 3D o la modalità framebuffer e ciascuno solo per il display attivo. Esiste un modo per eseguire il rendering 3D su uno schermo e framebuffer sull'altro?

È stato utile?

Soluzione

Bene, ho sentito che esiste una funzionalità di acquisizione del display che ti consente di disegnare 3D sul motore secondario (schermo inferiore), quindi l'ho cercato e ho trovato un esempio .

Purtroppo le macro DCAP non sembrano essere documentate, quindi ho dato un'occhiata alle definizioni reali 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)

A mio avviso debole sembra che tu possa catturare il 3D, disegnarlo sul sub e usare il frame buffer sul main, se vuoi. Per poter utilizzare il framebuffer sul motore secondario devi scambiare le schermate con lcdSwap () .

Altri suggerimenti

Non sono del tutto sicuro di quale sia la tua necessità, ma l'utilizzo del 3D sul motore di visualizzazione principale lascia comunque l'intero motore secondario a fare grafica di tipo framebuffer (o qualsiasi altro 2D) (usando ad esempio uno sfondo di rotazione esteso).

Se intendi usare la modalità framebuffer per catturare l'output dal motore 3D in modo da poter eseguire il rendering 3D su entrambe le schermate, nella cartella degli esempi libnds c'è un esempio che fa proprio questo:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top