11 2012 档案
摘要:在进入主题之前,我们先来回顾一下之前所走过的思路:1.首先是为了绘制多个四边形,并且为了节省效率,我们将多个四边形的数据集中到一起,一次上传到缓冲,并且只执行一次绘制,一次呈现。2.但是当需要纹理贴图时,我们发现颜色填充的四边形和贴图的四边形无法公用shader program,所以我们不得不将这两者分开,执行多次绘制,最后一次呈现。在这篇文章中我们会延续以上的思路,继续探索下去,来处理多纹理的情况。如果你仔细研究了前一篇文章中的ImageRender类,你会发现有一个很严重的问题,那就是一个ImageRender对象只有一个纹理对象,因而它只能批量渲染那些拥有相同纹理的Image对象。但是实
阅读全文
摘要:接下来我们该构建带有贴图的显示对象了。为了清楚的阐释问题,我们还是从最基本的程序开始,在本博的第一篇文章中介绍了最基本的构建一个四边形的程序,现在我们对其进行稍作修改即可让其显示贴图: 1 package test 2 { 3 import com.adobe.utils.AGALMiniAssembler; 4 import com.adobe.utils.PerspectiveMatrix3D; 5 6 import flash.display.Bitmap; 7 import flash.display.Sprite; 8 ...
阅读全文
摘要:目前为止我们绘制的显示对象的颜色都还是没有考虑透明度的,为了给我们的显示对象增加透明度这一特性,我们需要深入了解透明度的本质。所谓的透明度并不是真实世界中的那种透明,真实世界中的透明是物体发射或者反射的光线透过了物体和我们之间的障碍物,从而我们能够看见障碍物另一侧的物体。但是计算机世界中一切的显示都是虚拟的,所以不存在光线透过的问题。计算机图形学中的透明度实际上是通过两者的颜色混合而得到的一种模拟,参见alpha混合。具体的原理这里不多做解释,但是需要强调几点:1.alpha混合的操作对象数量为2,需要明确区分两者,可以通俗的称他们为背景层与前景层,但在很多技术文档中,他们的名称更加晦涩,比如
阅读全文
摘要:前一篇文章简单地构建了一个四边形,当然这个四边形还不完善,接下来我们将继续完善它。我们看到,1,这个四边形的尺寸并不是真正的视觉尺寸,2,还有无法通过改变四边形的坐标来移动它,3,也不能对他进行缩放。下面我们就从这三个方面来完善它。首先是尺寸,我们希望在给四边形指定的宽高数值就是他在屏幕上显示的像素大小。我们知道我们在屏幕上看到的图像实际上是经过一个矩形变换过的,在QuadRender的setMatrix方法中:1 var pm:PerspectiveMatrix3D = new PerspectiveMatrix3D();2 pm.perspectiveFieldOfViewLH(1,1,1
阅读全文
摘要:在上一篇文章中我们看到,为了绘制一个四边形,我们从最基本的API开始,按部就班,虽然最终达到了目的,但是很难想象如何将其应用于更加复杂的表现中。但是即使再复杂的表现,回过头一想,也逃不出上一篇文章中的基本步骤:创建环境-> 创建数据缓冲和矩阵数据-> 上传顶点数据和矩阵数据-> 编写渲染器(shader)->绘制呈现在这一过程中,真正影响表现的丰富程度的就是顶点数据和矩阵数据这一块(现阶段暂不考虑渲染器),为了能够拥有丰富的表现能力,我们需要将数据这一块分离出去,然他们能够灵活变化。当然需要考虑的是如何让底层API及时的知道他们的变化,并且尽可能低降程序运行的成本,提高
阅读全文
摘要:网上介绍stage3D基本API的文章基本都是以画三角形为案例。对于了解3D图形学的人来说很清楚怎么用这些API绘制一个四边形,但对于刚入门的人来说,虽然只是多了一个点,但如果运气不好可能要费很大的劲。我们知道stage3D API能绘制的最基本的图形元素是三角形,任何复杂的图形都要首先转化成若干个三角形才能用这些API来绘制。那么对于一个四边形,很显然,我们可以将它分解成两个三角形,如下图所示:1------2| / |0------3四边形的四个顶点为0,1,2,3。这四个数字只是用来标记他们(顶点索引)并不具有实际的几何意义,为了绘制他们,还需要给他们定位,即给他们各自指定一个坐标...
阅读全文
浙公网安备 33010602011771号