Die Kombination von 3D und Framebuffer-Modus auf dem DS
-
06-07-2019 - |
Frage
Die Dokumentation bedeutet, dass Sie entweder 3D-Rendering oder Framebuffer-Modus haben kann, und jeder nur auf das aktive Display. Gibt es eine Möglichkeit 3D zu einem Bildschirm und Framebuffer zum anderen zu machen?
Lösung
Nun, ich habe gehört, dass es Display-Capture-Funktionalität, die Sie auf dem sub-Engine (unterer Bildschirm) zeichnen 3D läßt so sah ich es und ich fand ein Beispiel .
Leider sind die DCAP
Makros scheint nicht dokumentiert zu werden, so hatte ich einen Blick auf die realen definiert 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)
Um meinen schwachen Geist sieht es aus wie Sie 3D erfassen können, ist es auf dem Unter ziehen und die Rahmenpuffer auf dem Haupt verwenden, wenn Sie möchten. Um den Framebuffer auf dem Sub-Engine verwenden werden Sie brauchen, um die Bildschirme mit lcdSwap()
tauschen.
Andere Tipps
Nicht ganz sicher, was Sie brauchen, ist aber 3D auf dem Hauptdisplay Motor Verwendung bleibt aber den gesamten Unter Motor Framebuffer (oder jeden anderen 2D) Typen Grafiken zu tun (mit einem erweiterten Dreh Hintergrund zum Beispiel).
Wenn Sie meinen, den Framebuffer-Modus verwenden, um Ausgaben zu erfassen vom Motor 3D, so dass Sie 3D auf beiden Bildschirme machen können, dann gibt es ein Beispiel, in dem libnds Beispielen Ordner, die genau dies tut: