狂想的天空

狂想,只要你想!

C++博客 首页 新随笔 联系 聚合 管理
  21 Posts :: 0 Stories :: 2 Comments :: 0 Trackbacks
上面的几节,对Rendering pipeline进行了概要的了解。

下面的小节中,我们进一步细下它。

本节内容,我们讲述Rendering pipeline 的vertex shader 部分的FVF
1>什么是FVF?
2>FVF的作用是什么?

所谓FVF,
就是Flexible Vertex Format的缩写。
即灵活顶点格式。

在前面的介绍中,当我们要显示模型时,必须将模型依次分为
多边形 -> 三角形 -> 顶点资料
最后,把顶点资料整理成一个做vertex buffer的清单形式。
而顶点资料部分,除了座标值颜色之外,还可以设定各种信息。
而有些信息只在特定的情况下才会用到。
比如,如果没有进行打光处理的话,那么法线的信息就是不需要的。
这些时有时无的信息,就造成了一个新概念的产生,即本节的主题:FVF;

DirectXGraphics提供了可以只选择必要的元素,来定义顶点资料的FVF.
我们只要将必要的元素依序选择出来,去定义结构即可。

例如:
或只需要顶点的座标和defuse(基本)色的话,就可以把结构定义成如下的形式:
1 struct MY_VERTEX
2 {
3   D3DXVECTOR3  p;    //位置
4   DWORD        color;//defuse色
5 };
DirectXGraphics中,为了表示座标值,有一种叫D3DXVECTOR3的结构,
这是把3个float型整合在一起,使用它可以用一行表示出座标值。

下面是一个 座标+法线 的FVF
1 struct MY_VERTEX
2 {
3   D3DXVERCTOR  p;//位置
4   D3DXVERCTOR  n;//法线
5 };
6 
在进行打光处理的时候,除了顶点的座标之外,为了决定顶点的颜色,还要法线这个参数,
这时候就需要用到上面的FVF格式。

下面是一个 座标+贴图座标 的FVF
struct MY_VERTEX
{
  D3DXVERCTOR p    ;
//座标
  DWORD       color;//defuse色
  D3DXVERCTOR t    ;//texture座标   
};

若要在三角形上贴图的话,,除了顶点座标之外,为了指定贴图的位置,必有贴图座标这个参数;

下节,我们了解一下FVF的应用;



posted on 2008-12-15 20:57 狂之想 阅读(722) 评论(0)  编辑 收藏 引用 所属分类: 2D,3D

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


//