上面的几节,对
Rendering pipeline进行了概要的了解。
下面的小节中,我们进一步细下它。
本节内容,我们讲述Rendering pipeline 的vertex shader
部分的
FVF1>什么是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的应用;