2009-06-23 4 views
1

Die Dokumentation bedeutet, dass Sie entweder 3D-Rendering- oder Framebuffer-Modus haben können und jeweils nur für die aktive Anzeige. Gibt es eine Möglichkeit, 3D auf dem einen Bildschirm und Framebuffer auf dem anderen zu rendern?Kombinieren von 3D- und Framebuffer-Modus auf dem DS

+0

Sprechen wir 3D zum Hauptbildschirm und zum Framebuffer zum Unterbildschirm, oder sprechen wir über 3D auf einem Hintergrund und Framebuffer auf dem anderen? Wenn letzteres ich auch gerne wissen würde, da ich mit der FB Bewegungsunschärfe machen möchte :) – Skurmedel

+0

Das ehemalige wäre für mich ausreichend. :) – FeepingCreature

Antwort

0

Nun, ich habe gehört, dass es eine Bildschirmaufnahmefunktion gibt, mit der man 3D auf der Sub-Engine (unterer Bildschirm) zeichnen kann, also habe ich nachgesehen und eine example gefunden.

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) 

Zu meinen schwachen Verstand es aussieht wie du kann 3D aufnehmen, auf das Sub zeichnen und den Frame Buffer auf dem Haupt verwenden, wenn du willst. Um den Framebuffer auf der Sub-Engine verwenden zu können, müssen Sie die Bildschirme mit lcdSwap() tauschen.

0

Nicht ganz sicher, was Sie brauchen, aber die Verwendung von 3D auf der Hauptanzeige-Engine lässt immer noch die gesamte Sub-Engine Framebuffer (oder jede andere 2D) Grafik (z. B. einen erweiterten Rotationshintergrund).

Wenn Sie den Framebuffer-Modus zu verwenden, bedeuten die Ausgabe von der 3D-Engine zu erfassen, so dass Sie 3D auf beiden Bildschirme machen können, dann gibt es ein Beispiel, in dem libnds Beispielen Ordner, die genau dies tut:

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