1

该文档暗示您可以使用 3D 渲染或帧缓冲模式,并且每个模式都只能用于活动显示。有什么方法可以将 3D 渲染到一个屏幕并将帧缓冲区渲染到另一个屏幕?

4

2 回答 2

0

好吧,我听说有显示捕获功能可以让您在子引擎(底部屏幕)上绘制 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,将其绘制在 sub 上,并根据需要使用 main 上的帧缓冲区。为了能够在子引擎上使用帧缓冲区,您需要将屏幕与lcdSwap().

于 2009-06-23T17:50:43.313 回答
0

不完全确定您的需求是什么,但在主显示引擎上使用 3D 仍然让整个子引擎执行帧缓冲(或任何其他 2D)类型的图形(例如使用扩展的旋转背景)。

如果您打算使用帧缓冲模式来捕获 3D 引擎的输出,以便您可以将 3D 渲染到两个屏幕,那么 libnds 示例文件夹中有一个示例可以执行此操作:

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

于 2013-08-24T22:03:02.923 回答