代码之家  ›  专栏  ›  技术社区  ›  FeepingCreature

在DS上结合3D和帧缓冲模式

  •  1
  • FeepingCreature  · 技术社区  · 15 年前

    文档意味着您可以使用3D渲染或帧缓冲区模式,并且每个模式只能用于活动显示。有没有办法将3D渲染到一个屏幕,将帧缓冲区渲染到另一个屏幕?

    2 回复  |  直到 11 年前
        1
  •  0
  •   Skurmedel    15 年前

    嗯,我听说有显示捕获功能,可以让你在子引擎(底部屏幕)上绘制3D,所以我查了一下,发现 example .

    可悲的是 DCAP 宏似乎没有文档化,所以我看了一下真正的定义 nds/arm9/视频.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上使用帧缓冲。要在子引擎上使用framebuffer,需要将屏幕与 lcdSwap() .

        2
  •  0
  •   Jason    11 年前

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

    如果要使用帧缓冲区模式捕获来自3D引擎的输出,以便可以将3D渲染到两个屏幕,则在libnds examples文件夹中有一个示例,它只执行以下操作:

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

    推荐文章