• λ我爱Aspx >> Asp.Net >> VB.NET实现DirectDraw9 (2) 动画
  • VB.NET实现DirectDraw9 (2) 动画

  • :未知  Դ:internet  :2007-5-5 13:30:33  ؼ:.net
  • 关键字: 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行,里面有比较详细的注释.所以再这里就没有必要解释了

    Ҷƪл˵?
  • һƪDuwamish深入剖析-结构篇
    һƪ学习笔记(补)《.NET框架程序设计(修订版)》--目录