Pregunta

La documentación implica que puede tener renderizado 3D o modo framebuffer, y cada uno solo en la pantalla activa. ¿Hay alguna forma de renderizar 3D en una pantalla y framebuffer a la otra?

¿Fue útil?

Solución

Bueno, he oído que hay una función de captura de pantalla que le permite dibujar en 3D en el motor secundario (pantalla inferior), así que lo busqué y encontré un ejemplo .

Lamentablemente, las macros DCAP no parecen estar documentadas, así que eché un vistazo a las definiciones reales 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)

En mi opinión, parece que puedes capturar 3D, dibujarlo en el submarino y usar el búfer de cuadro en el principal si lo deseas. Para poder usar el framebuffer en el motor secundario, deberá intercambiar las pantallas con lcdSwap () .

Otros consejos

No estoy del todo seguro de cuál es su necesidad, pero la utilización de 3D en el motor de visualización principal todavía deja todo el motor secundario para hacer gráficos de tipo framebuffer (o cualquier otro 2D) (usando un fondo de rotación extendida, por ejemplo).

Si quiere usar el modo framebuffer para capturar la salida del motor 3D para poder renderizar 3D en ambas pantallas, entonces hay un ejemplo en la carpeta de ejemplos de libnds que hace exactamente esto:

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top