1
我需要將原始像素數據繪製到Nintendo DS的「子」屏幕上,例如我是在「幀緩衝」模式還是「擴展旋轉」模式下繪製到主屏幕。我怎樣才能做到這一點與當前版本的libnds(這似乎對使用VRAM_C
限制)?如何畫一個ds的子顯示屏,就好像它是一個幀緩衝區?
我需要將原始像素數據繪製到Nintendo DS的「子」屏幕上,例如我是在「幀緩衝」模式還是「擴展旋轉」模式下繪製到主屏幕。我怎樣才能做到這一點與當前版本的libnds(這似乎對使用VRAM_C
限制)?如何畫一個ds的子顯示屏,就好像它是一個幀緩衝區?
#include <nds.h>
int main(void)
{
int x, y;
//set the mode to allow for an extended rotation background
videoSetMode(MODE_5_2D);
videoSetModeSub(MODE_5_2D);
//allocate a vram bank for each display
vramSetBankA(VRAM_A_MAIN_BG);
vramSetBankC(VRAM_C_SUB_BG);
//create a background on each display
int bgMain = bgInit(3, BgType_Bmp16, BgSize_B16_256x256, 0,0);
int bgSub = bgInitSub(3, BgType_Bmp16, BgSize_B16_256x256, 0,0);
u16* videoMemoryMain = bgGetGfxPtr(bgMain);
u16* videoMemorySub = bgGetGfxPtr(bgSub);
//initialize it with a color
for(x = 0; x < 256; x++)
for(y = 0; y < 256; y++)
{
videoMemoryMain[x + y * 256] = ARGB16(1, 31, 0, 0);
videoMemorySub[x + y * 256] = ARGB16(1, 0, 0, 31);
}
while(1)
{
swiWaitForVBlank();
}
}
下面是一個簡單的例子,其上創建的主,副屏幕16位幀緩衝器和填充每個與紅色或藍色。