12 2012 档案
摘要:回顾之前,我们已经实现了颜色填充的四边形,以及具有纹理贴图的四边形。如果仅仅只是这些,那实在是太无聊了,通过这些我们能够实现的东西无非就是一堆可以动的图片,当然对于某些需求这已经足够,但我们并不因此而止步。另一方面,GPU硬件的能力也远不止如此,这些单调的贴图四边形远远没有发挥为其提供的巨大资源。接下来我们该研究怎样让GPU尽量地发挥它们应有的价值了。但是为了给GPU施加指令,就需要编写shader program,于是你会发现有一个冲突,我们之前的很多显示对象是共享shader program的,但是为了实现更丰富的表现效果,应该让每个对象的shader program独立开来。所以,很明显
阅读全文
摘要:在硬件渲染的基础之上实现动画的方案应该很多,但比较普遍也是很基础的一种做法就是纹理动画,即通过每一帧改变纹理坐标来在同一张纹理上实现画面的切换。如下的一张精灵图序列,如果我们每一帧将纹理坐标(四个点)向前推进一步,那么就可以让人物动起来:实现这种动画其实并不难,但前提是你已经实现了静态的纹理贴图,在静态纹理贴图的基础之上我们需要做的就是将每一帧的纹理坐标数据计算并存储起来,然后在每一帧的迭代中,根据当前帧的计数,取得相应的纹理坐标即可。我们通过扩展之前的Image类来实现这种动画: 1 package psw2d.display 2 { 3 import flash.display.B...
阅读全文
摘要:显示列表的概念 Flash传统的显示列表实质上是一种树形数据结构,可以用下面的图来表示:这一数据结构的实现是通过两个类:DisplayObject和DisplayObjectContainer,其中前者为后者的父类(介于阅读的方便,我省略了这两个类的一些几何属性和方法,更完整的内容可以参考后面的源码资源):DisplayObject: 1 package psw2d.display 2 { 3 import flash.geom.Matrix; 4...
阅读全文
浙公网安备 33010602011771号