AppleSeeker's Tech Blog
Welcome to AppleSeeker's space
posts - 84,  comments - 767,  trackbacks - 6

三维渲染带来了很多新的挑战:3D图形是以模型而非简单的位图来进行渲染的,我们需要切换到一个不同的角度来观察接近或远离屏幕的运动,同时需要以一种完全不同的方式来告诉XNA我们想在画面的何处进行绘制。

当准备进行3D图形渲染时,我们会使用一种基于矩阵的系统。矩阵可以将一系列的移动和变换编码为一个紧凑的结构,然后应用到我们想要绘制的图形中。执行此操作所需的大部分计算都以XNA函数的形式进行了封装,因此我们无需过多的关注其内部运行方式。

与任何其他事物相同,可能需要一点时间来习惯以矩阵变换进行思维,不过一旦你习惯了就会发现它们是非常有用的工具。事实上,最终你可能会发觉比起XNA的精灵渲染方式,你更喜欢矩阵变换。

在进行3D渲染时,XNA通常会使用一套抽象的坐标系统,而不是精灵渲染中基于像素的坐标系统,也就是说这里并不关注像素。虽然一开始听上去这像是一个缺点,不过使自己摆脱像素坐标实际上大有裨益。

当我们初始化XNA时,可以告诉它屏幕的尺寸然后坐标系统会自动扩展从而进行尺寸匹配。因此,如果将图形对象向右移动一定的距离,实际移动的这段距离是与后台缓冲区尺寸无关的。所以,我们应考虑使用更小的缓冲区来提高性能,同时无需更改任何渲染代码。

谈到图形的绘制,其实XNA无法绘制任何比三角形更复杂的内容。乍一看这似乎很严格,但事实上,你会发现它并不是我们在某些示例项目中所使用的那样。

在绘制时,我们将每个三角形称为表面。构成三角形的点称为顶点。图中显示了使用四个顶点创建的两个三角形面。其中有两个顶点被两个三角形共用。

image

这些顶点实际上并不会被XNA显示出来,只会显示由它们定义的表面,图中的顶点仅仅是为展示它们的作用。

除三角形以外其他可用的基元只有线条。

在渲染精灵时,每个独立的绘图调用都提供了进行绘制所需的全部信息,3D渲染的方法则稍有不同。XNA维护了大量的状态值信息,比如当前渲染正在使用的纹理,是否启用了透明度,是否开启了光照等等。

为了使渲染效果与预期一致,这些状态都必须在渲染调用之前进行设定。一旦状态设定后,就会保持其状态值,直到再次对其进行更改为止。

posted on 2011-05-12 12:14 AppleSeeker(冯峰) 阅读(78) 评论(0) 编辑 收藏
Free Hit Counter

MSN:appleseeker@hotmail.com
Mail:appleseeker@gmail.com MVP


【新品特价】SPORTICA 防水商务10春新款内里绒夹克外套03409081
[YT001]深层去斑美白去斑套餐 去黑淡痘印 最好最热产品日销千套
昵称:AppleSeeker(冯峰)
园龄:6年6个月
粉丝:33
关注:3

<2011年5月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

搜索

 

常用链接

最新随笔

我的标签

随笔分类(124)

随笔档案(84)

Mobile Blog

Recommend Blog

  • 李占卫

Recommend Site

  • Green IT

积分与排名

  • 积分 - 230256
  • 排名 - 352

最新评论

阅读排行榜

评论排行榜

推荐排行榜