金桥科普  
设为首页 关于我们 邮箱登录
科普聚焦时代科技科普生活科学技术自然科学航空航天科技博览历史考古电脑IT
您现在的位置: 首页 >> 科普频道 >> 电脑游戏 >> 文章详情
Direct3D制作二维界面

cyrys gameres 2006-09-30
Direct3D制作二维界面总结(原创)

Direct3D制作二维界面总结(原创)

因为工作关系,最近用Direct3D中的二维部分制作了一个软件的界面部分,在这里将其中的感受写下来,与大家分享,也欢迎大家讨论!

GDI与Direct3D简单对比
GDI: CPU占用少,但易产生画面闪烁现象,在现成的函数中,可达到画面效果比起Direct3D少的多。可以用现成的控件,处理消息方便,但受一定的系统限制!对硬件要求低。
Direct3D:由于程序结构的关系,CPU占用高,须采用脏矩形技术(但增加程序复杂性),才可有效降低CPU占用率,不会产生画面闪烁,可较之容易地渲染出华丽的画面!界面与用户的交互,完全靠自己来渲染不同的画面,控制比GDI 复杂,但可以精确地进行处理,达到自己想要的任何效果!对硬件有一定的要求,还需要装相应的运行时库,虽然使用脏矩形,可有效提高响应速度,但不同配置的机器,还是有明显的差别!还需考虑设备丢失问题。

    Direct3D制作的界面,实际为二维图形交互程序。我在刚开始写时,没有经验,便想到一点点来,但现在回想起来,程序结构是非常重要的,因为它不像GDI,有确定的处理方式,它没有现成的框架可用,我们的界面是什么样子的,完全由自己来控制。因此设计部分时一定要考虑周全,我觉得最基本的要求就是:程序易于理解、扩展并且效率高!对某个事件,一定要理解清楚,如鼠标点击某个图形,你可以在鼠标按下时进行处理相应的事件,也可以在鼠标按下再弹起时再处理,这就要分清其区别,这也是看出,比起GDI可进行更好的控制。
    在我的程序中,二维渲染,用的最多的是ID3DXSprite接口IDirect3DDevice9::UpdateSurface()方法(将后备缓冲作为参数) ,到后面基本上都用前一种了。为测试其性能,我仿照ID3DXSprite做过一个自己的精灵类,即创建顶点缓冲进行纹理渲染,在每次调用时,将顶点位置拷入,再进行渲染,发现两者差不多,只是在渲染比较小的纹理且每一帧渲染很多张纹理时,自己做的精灵类要快一些,所以就没有改它。不知大家是否认同?它可容易地渲染出透明的图形,再配合好美工,做出漂亮的界面是不难的!
    最终我的程序,使用脏矩形,大大降低了CPU占用率,提高了响应速度。程序很小,不到500K,但装入全部资源后,达到了近20M。

今天就想到这么多了,欢迎讨论,更希望抛砖引玉!
来Gameres.com这么久了,这是第一次发这样的贴子,希望和大家共同进步!:)


  发表评论 写信给编辑 关闭窗口
同栏目内容
· 瑞典在网游中开设虚拟大使馆 2007-06-06
· 魔兽争霸3秘籍(魔兽无敌秘籍) 2007-03-28
· 一个实用的3-D游戏引擎执行方法 2006-09-30
· lua C_API 的 c++封装 2006-09-30
· FreeType的教程代码 2006-09-30
· XNA2D入门 2006-09-30
相关内容
近期主推
西藏发现青藏高原最大冰川群
·西藏发现青藏高原最大冰川群
·中日: "月亮女神"携手"嫦娥"
·行星大碰撞砸死恐龙催生人类
·美研制会飞汽车定价9万美元
·美国教授设计出自适应机器人
·银河系可能有20多个黑洞
近期热门
英海域惊现大龙虾为普通龙虾5倍
·英海域惊现大龙虾为普通龙虾5倍
·新物种金蛙体表有剧毒
·我国嫦娥工程计划测量月球
·精神病药物可治多种癌症
·视觉震撼:来自海底的精灵
·能删除不良记忆的药物诞生
近期焦点
广西发现罕见溶洞钟乳石有30万年
·广西发现罕见溶洞钟乳石有30万年
·澳大利亚惊现“卡布基诺”海滩
·美国"彩色"瀑布夜幕下震撼游人
·地球上究竟有多少个物种
·英国探险家北极游泳破纪录
·世界之最 世上最小的动物
金桥科普是一个公益性栏目,内容由作者提供或摘自互联网,其目的是向广大网民普及科学技术知识。如果您发现本网站转载或摘编了您拥有著作权的作品,请通知我们(电话:023-63659911),我们立即删除。
关于我们 | 网站地图 | 用户注册 | 广告客户 | 招聘信息 | 业务信息
Copyright@2006-2009 JQInfo.com,WONDER. All Rights Reserved
重庆科技咨询中心.重庆网得信息技术有限公司.版权所有
Email:webmaster@jqinfo.com
重庆数据通信局提供网络带宽. 渝ICP备05002327号