- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
nds自制软件教程2 nds自制软件教程2 这一部分包括如何利用nds
NDS自制软件教程2NDS自制软件教程2这一部分包括如何利用NDS的“帧缓冲”(framebuffer)模式在NDS的一个显示屏上绘图。NDS的每一个显示屏都可以被设置成很多种模式。每一种模式有其优缺点,但我们这里只使用“帧缓冲”模式来实现一个最简单的绘图功能。“帧缓冲”(framebuffer):“帧缓冲”是一种显示屏映射到一部分内存的模式。向内存中写数据会导致数据显示在显示屏上。在这个模式中,显示屏上的一个象素由2字节数据表示。这相当于C语言中的16位无符号整型数据类型(16 bit unsigned integer)。我们写入这部分内存的数据是以555格式显现的象素颜色。所以我们不需要人为转换555格式,这有一个方便的宏RGB15让我们确定每一个象素的红、绿、蓝色的数量。每一个红、绿、蓝元素是一个从0-31的值。0表示无颜色,31表示最大色。(通过不同组合来显现不同颜色)。这是一个例子:RGB15 ? ? ? Color RGB15(31,0,0) ? Red RGB15(0,31,0) ? Green RGB15(0,0,31) ? Blue RGB15(0,0,0) ? Black RGB15(31,31,31) White下面的代码片是示范如何通过给定一个指向“帧缓冲”区内存开始部分的指针来用蓝色填充屏幕的:? uint16* framebuffer = ...;for(int i = 0; i SCREEN_WIDTH * SCREEN_HEIGHT; ++i) ? *framebuffer++ = RGB15(0,0,31);向“帧缓冲”写的数据会立刻被画在相应象素上。“帧缓冲”模式的好处是你可以在屏幕任意地方画任何你想画的东西,它直接使用NDS的2D硬件加速。“帧缓冲”的缺点是你必须自己做所有事。没有“精灵”(sprites)、贴图、卷动等等,除非你自己写代码实现。NDS的其他模式也许会适合做这些事,它们会在以后的教程中介绍。同时,“帧缓冲”模式有很多灵活性,并让我们更加接近硬件。屏幕:从硬件角度来看NDS上有两个屏幕。一个在上一个在下。下屏是唯一的触摸屏。从编程角度来看这也有两个屏。一个主屏和一个副屏。每一个程序设计中的屏是和硬件对应的。在这个例子中我们只使用一个屏,主屏,它所对应的是硬件的上屏幕。我们用一个叫videoSetMode的函数来设置屏的模式。有很多“帧缓冲”内存可以被映射到一个屏幕。这就允许我们实现双缓冲、特殊页之类的功能。我们现在只使用一个“帧缓冲”,所以我们使用“MODE_FB0”;videoSetMode(MODE_FB0);“帧缓冲”的内存区域是一部分带有一个字母“A”的名叫VRAM的内存。对每一部分,我们需要告诉显示系统那一部分VRAM 内存我们用来做 “帧缓冲”。我们可以像这样使用第一个,VRAM_A:vramSetBankA(VRAM_A_LCD);画一个图形:我们要在显示屏上画的是一个单色矩形。我们写了一个函数来实现它,函数参数包括矩形在屏幕上的位置的X、Y坐标、颜色、以及一个指向“帧缓冲”区的指针:void draw_shape(int x, int y, uint16* buffer, uint16 color){buffer += y * SCREEN_WIDTH + x;for(int i = 0; i shape_height; ++i) {? uint16* line = buffer + (SCREEN_WIDTH * i);? for(int j = 0; j shape_width; ++j) {? ? *line++ = color;? }}}“帧缓冲”在内存中以行排列,所以如果屏幕有200象素宽,那麽“帧缓冲”开始的200个uint16(一个象素由一个uint16数据表示)数据单元就代表显示屏的第一行。第二个200个uint16数据单元就表示第二行,等等。“draw_shape”函数首先通过对X、Y坐标的计算来确定第一个象素在“帧缓冲”中的位置。注意SCREEN_WIDTH 和 SCREEN_HEIGHT 是“LIBNDS”提供的返回屏幕宽、高的宏。函数接下来通过向“帧缓冲”中的正确位置写入颜色数据来绘制图形的每一行。shape_height 和 shape_width 是静态变量,做测试时可改变其值:static int shape_width = 10;static int shape_height = 10;移动图形:让图形能在屏幕上移动我们需要擦除现在位置的图形并在新位置重画。这可以通过保存运动前后X、Y坐标的轨迹
您可能关注的文档
- pep小学英语三年级下 unit 6 课堂实录.docx
- 教科版初中八年级物理2016-2016上册期中考试试题附答案和评分标准.docx
- 2016年湖北高考语文试卷数学文综理综英语试题评分答案word下载免费.docx
- 2016版新pep小学三年级英语上册第二单元unit2 colours试卷测试题.docx
- 计算机应用技术专业毕业论文 [精品论文] 哼唱检索中哼唱信息处理方法的研究.doc
- 酒店设施设备管理制度.docx
- 沪科版七年级上学期期末初一数学测试题及答案.docx
- 计算机应用技术专业毕业论文 [精品论文] 用于cs架构的家电测试软件系统组件设计与实现.doc
- XXXX村镇银行柜员上岗测试.docx
- 【新人教版】八年级英语上册重点句型大汇总,准初二生必备!.docx
- powerpoint2010操作题 计算机powerpoint操作题.doc
- 江苏老年人体质健康水平变化趋势及影响因素研究.doc
- XX服装公司关于无缝美体内衣生产项目商业计划书-.doc
- 黄河农村商业银行校园招聘考试笔试题目试卷历年考试真题复习资料.doc
- php 概述 毕业论文外文翻译 (nxpowerlite).docx
- XX县基本普及十五年教育实施方案.doc
- 【新版】XX矿业集团企业五年发展战略规划项目建议书-.doc
- XXX市私营个体经济“十三五”发展规划.doc
- plc(s7-200)通过自由通讯口方式与变频器通讯(vlt丹佛斯).doc
- ××房地产公司法人治理结构授权体系.doc
最近下载
- 厂房水电装修合同协议书.docx VIP
- (正式版)D-L∕ T 1145-2009 绝缘工具柜.docx VIP
- GMC-96X钢轨打磨车岗位对标卡——五号位保养内容卡片1.doc VIP
- 第24章相似三角形(基础、典型、易错、压轴)分类专项训练(原卷版+解析).docx VIP
- 给排水国标图集-02S404:防水套管.pdf VIP
- DB41T 2798-2024综合性应急演练指南.pdf VIP
- 基坑支护冬季施工方案.doc VIP
- GMC-96X钢轨打磨车岗位对标卡——七号位保养内容卡片1.doc VIP
- 公共建筑工程施工设计方案.doc VIP
- 牙体解剖生理—乳牙牙体解剖和髓腔形态(口腔解剖生理学).pptx
文档评论(0)