DSでの3Dモードとフレームバッファーモードの組み合わせ
-
06-07-2019 - |
質問
このドキュメントでは、3Dレンダリングモードまたはフレームバッファモードのいずれかを使用でき、それぞれがアクティブなディスプレイに対してのみ使用できることを示しています。 3Dを一方の画面にレンダリングし、フレームバッファーを他方の画面にレンダリングする方法はありますか?
解決
まあ、サブエンジン(下の画面)に3Dを描画できるディスプレイキャプチャ機能があると聞いたので、調べてみると、例。
残念ながら DCAP
マクロは文書化されていないようです。そのため、 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)
3Dをキャプチャし、サブで描画し、必要に応じてメインでフレームバッファーを使用できるように思えます。サブエンジンでフレームバッファを使用できるようにするには、画面を lcdSwap()
と交換する必要があります。
他のヒント
必要なものが完全に定かではありませんが、メインディスプレイエンジンで3Dを使用すると、サブエンジン全体がフレームバッファ(または他の2D)タイプのグラフィックスを実行できます(たとえば、拡張回転バックグラウンドを使用)。
フレームバッファモードを使用して3Dエンジンからの出力をキャプチャし、両方の画面に3Dをレンダリングできるようにする場合は、libnds examplesフォルダーにこれを行うサンプルがあります。
所属していません StackOverflow