我爱Aspx >> Asp.Net >> VB.NET实现DirectDraw9 (2) 动画关键字: VB.NET DirectX DirectDraw 9 作者:董含君
转载请注明来自 http://blog.csdn.net/a11s
===========日记================
发现最近比较懒惰,代码稍微长那么一点,就不想看了.还是看书比较好.
考虑做游戏,但是目前所学的知识还不够.革命尚未成功,同志们仍需努力啊
===========End 日记=============
今天是完成全屏幕动画,1024x768,外加多层绘制(鼠标位置就不值得一提了)
先回想一下我们平时是怎样画图的.(应该是做图)
1 准备一张纸,这个要给别人看的 (PrimarySurface)
2 一支笔 (Draw方法)
然后自由发挥就可以了 (找坐标,画..)
这样是可以的,你的观众(坐在显示器前面的人)不但能看见你的绘制的作品,而且连你如何绘制的都能看见(也许你正在用描点法画图...). 很明显,我们不希望观众看见我们绘图时的“优雅姿态“.我们要的是速度以及效果,这么慢就不叫DirectDraw了
方案2
1 准备一张纸,这个是给观众欣赏的(PrimarySurface)
2 再准备一个成型的作品,比如达芬奇画过的鸡蛋 (Surface)
3 画笔,尖刀,胶水
大概你知道我要做什么了吧,用粘贴的办法自然要快于描点.但是,观众们依然可以知道你是粘贴上去的!当演示一幅一幅的动画的时候,往往会粘贴的到处都是.....
方案3
1 找个工作台,请观众坐下慢慢看当前的图像(PrimarySurface)
2 自己再另外找一张或者更多的画板 (BackSurface)
3 各种工具,只要能方便使用就好 (DrawFast DrawRect DrawText DrawCircle .....)
4 请一位助手帮忙更换工作台的作品.(PrimarySurface.flip)
这样您可以解放出来,再也不用担心您的观众看到您绘制的过程了.虽然他们可以“猜测“您是如何绘制的.我们这样做,在backSurface上面用任意的快速方法做图,当然可以从其他Surface上面复制,然后粘贴到BackSurface,提交给PrimarySurface,让他Flip,用户看到的就是您绘制完之后的结果(PrimarySurface),当观众对您的作品赞不绝口的时候,您正在刚才flip之后的画板上修改,然后把修改之后的这个画板再flip...
这样,两张画板解决了问题.同时只有1个是观众正在看的,另外1个是您手头上正在画的,您的助手(PrimarySurface)很聪明,不会搞错,所以你只要安心画当前的画板(BackBuffer)就够了
强调一下,您绘制的总是Backbuffer,flip方法会把您的backbuffer呈现到PrimaryBuffer,然后绘制,呈现,绘制,呈现...
或者您理解为复制到PrimarySurface也可(实际上是内存的块移动)
大体步骤跟前文说得一致,仅仅是多生命了几个Surface用于复制,源代码不过才200行,主要代码也就不到100行,里面有比较详细的注释.所以再这里就没有必要解释了
Ҷƪл˵?
学习笔记(补)《.NET框架程序设..[05-05]
?dos下编译.net程序找不到csc.e..[05-05]
vs.net 2005中文版下载地址收藏[05-05]
Asp.net页面输出到EXCEL[05-01]
ASP.NET 2.0中使用自定义provide..[04-30]
用ASP.NET建立一个在线RSS新闻聚..[04-30]
ASP.NET应用程序中调用EJB[04-30]
ASP.NET 2.0中使用webpart系列控..[04-30]
ASP.NET 2.0轻松实现数据库应用开..[04-30]
漫谈ASP.NET设计中的性能优化问题[04-30]
学习笔记(补)《.NET框架程序设..[05-05]
VB/ASP 调用 SQL Server 的存储过..[05-05]
?dos下编译.net程序找不到csc.e..[05-05]
通过Web Services上传和下载文件[05-05]
【小技巧】一个判断session是否过..[05-05]
NHibernate快速指南(翻译)[05-05]
vs.net 2005中文版下载地址收藏[05-05]
火影忍者疾风传 第231话「医疗忍..[05-02]
ASP常用的代码[05-01]
ASP初学者的10个编程技巧[05-01]