文档暗示您可以具有3D渲染或帧缓冲模式,并且每个模式仅用于活动显示。有没有办法将3D渲染到一个屏幕并将帧缓冲渲染到另一个屏幕?
答案 0 :(得分:0)
我听说有显示捕捉功能可以让你在子引擎(底部屏幕)上绘制3D,所以我查了一下,发现了example。
可悲的是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()
交换屏幕。
答案 1 :(得分:0)
不完全确定您的需求是什么,但在主显示引擎上使用3D仍然会使整个子引擎执行帧缓冲(或任何其他2D)类型图形(例如使用扩展旋转背景)。
如果您的意思是使用帧缓冲模式来捕获3D引擎的输出,这样您就可以将3D渲染到两个屏幕,那么libnds examples文件夹中有一个示例就是这样: