gpt4 book ai didi

c++ - 在 devkit pro 中在图像上显示文本时屏幕顶部出现垃圾

转载 作者:行者123 更新时间:2023-11-28 07:31:32 29 4
gpt4 key购买 nike

我目前正在使用 16 位 libnds (Whith devkitpro) 示例作为基础,并试图在同一屏幕上显示文本和 png 背景图像(在本示例中它是顶部屏幕)。我遇到了与 this post 类似的问题.

我在屏幕顶部有垃圾(仅当 consoleInit(...) 被调用时),类似于线程中的第一个问题。唯一的问题是我以不同的方法显示背景图像,因此他们在该线程中所做的修复不适用于此。

我正在寻找的只是是否有办法修复屏幕顶部的垃圾。如果有更有效/更好的显示图像的方式,我愿意接受,只是我还没有找到足够详细的教程来说明如何在不使用这种方法的情况下加载图像作为背景。任何帮助,将不胜感激。我会回答任何人关于什么不起作用的任何进一步问题。

您可以找到项目 attached here .

最佳答案

很抱歉拖延了很长时间,但是您的代码存在一些问题。首先是在模式 4 中唯一可以设置为 16 位位图的背景是第 3 层。http://answers.drunkencoders.com/what-graphics-modes-does-the-ds-support/

接下来,所有图层都共享一 block 背景内存,而您的垃圾来自您用字体字符和控制台背景 map 覆盖视频内存中的部分位图。一个简单的解决方案是通过将其 map 基数设置为 1 来移动位图。这会将其在图形内存中偏移 16KB,从而为您的文本层留下 16KB 的空间(这只有效,因为我们无法立即在屏幕上显示整个 256x256 图像,因为DS 的分辨率为 256x256x2bytes 填满了所有内存库 A...更准确地说,我们应该为主背景分配另一个内存库...但是因为我们看不到底部 70 行左右的像素无论如何,他们没有完全将其放入显存中也没关系。

libnds 还有一个名为“bgGetGfxPtr(id)”的宏可以让您更轻松地找到背景内存通过 BG_GFX 的偏移量计算它。

对您的代码所做的所有更改应该如下所示(我在 libnds 代码常见问题解答中添加了一个版本:http://answers.drunkencoders.com/wp-admin/post.php?post=289&action=edit&message=1)

int main(void) {


//Top screen pic init
videoSetMode(MODE_4_2D);
vramSetBankA(VRAM_A_MAIN_BG);
int bg = bgInit(3, BgType_Bmp16, BgSize_B16_256x256, 1,0);
decompress(drunkenlogoBitmap, bgGetGfxPtr(bg), LZ77Vram); //Displays/decompresses top image

//videoSetMode(MODE_4_2D);
consoleInit(0,0, BgType_Text4bpp, BgSize_T_256x256, 4,0, true, true);
iprintf("\x1b[1;1HThe garbage is up here ^^^^^.");
iprintf("\x1b[21;1HTesting the text function...");

while(1) {
swiWaitForVBlank();
scanKeys();
if (keysDown()&KEY_START) break;
}
return 0;
}

关于c++ - 在 devkit pro 中在图像上显示文本时屏幕顶部出现垃圾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17592489/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com