vertex shader 之 FVF

vertex shader 之 FVF
上面的几节,对 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的应用;



你可能感兴趣的:(vertex shader 之 FVF)