2009-06-23 15 views
1

该文档意味着您可以具有3D渲染或帧缓冲模式,并且每个模式仅适用于活动显示。有没有什么方法可以将3D渲染到一个屏幕,并将帧缓冲渲染到另一个屏幕上?在DS上结合3D和帧缓冲模式

+0

我们是否在主屏幕和帧缓冲区中向主屏幕显示3D,或者我们是在一个背景上谈论3D,还是在另一个背景上谈论帧缓冲?如果后者我想知道,因为我想用FB来做运动模糊:) – Skurmedel 2009-06-23 10:30:23

回答

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,在子上绘制它,并在主体上使用帧缓冲区(如果需要的话)。为了能够在子引擎上使用framebuffer,您需要使用lcdSwap()交换屏幕。

0

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

如果你的意思是使用framebuffer模式拍摄从3D引擎输出,使您可以呈现3D到两个屏幕,再有就是在libnds示例文件夹中的例子不只是这一点:

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