首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当在devkit pro中通过图像显示文本时,屏幕顶部出现垃圾

当在devkit pro中通过图像显示文本时,屏幕顶部出现垃圾
EN

Stack Overflow用户
提问于 2013-07-11 19:42:48
回答 1查看 377关注 0票数 1

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

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

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

您可以找到项目attached here

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-24 23:58:02

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

接下来,所有层都共享一块后台内存,并且您的垃圾来自您用字体的字符和控制台背景的映射覆盖视频内存中的位图的一部分。一个简单的解决方案是移动它的地图基础为1的位图。这偏移了16KB的图形内存,留下16KB的空间为您的文本层(这只是因为我们不能在屏幕上显示整个256x256的图像一次由于分辨率为256x256x2字节填满所有的内存库A...to更正确,我们应该分配另一个内存库给主background...but,因为我们看不到底部的70行左右的像素,我们的图像无论如何,这是可以接受的,他们没有做成视频内存)。

libnds还有一个名为"bgGetGfxPtr(id)“的宏,它可以让你更简单地找到你的背景内存,它会在你设置好后,在视频内存中获得一个指向你的背景gfx的指针,这样你就不必通过BG_GFX的偏移量来计算它了。

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

代码语言:javascript
复制
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;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17592489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档