+ -
当前位置:首页 → 问答吧 → 关于directX着色器顶点数据声明的问题

关于directX着色器顶点数据声明的问题

时间:2011-12-07

来源:互联网

directX9着色器顶点声明方式与directX8不同  

directX8中可以将顶点数据与输入寄存器绑定
那么在DirectX9中,用IDirect3DVertexDeclaration9声明顶点,这个借口可以将顶点数据与usage绑定,但是我如何知道在汇编着色器中它与哪一个寄存器绑定呢?

作者: yuanye15978   发布时间: 2011-12-07

- -! 你没看sdk么

汇编里面用dcl_***绑定输入属性到v(n),然后通过v(n)访问数据

作者: Kevin_qing   发布时间: 2011-12-07

额。。 是不是寄存器里面的数据所表示的意义是不变的?
  #define D3DVSDE_POSITION   0
  #define D3DVSDE_BLENDWEIGHT  1
  #define D3DVSDE_BLENDINDICES 2
  #define D3DVSDE_NORMAL    3
  #define D3DVSDE_PSIZE     4
  #define D3DVSDE_DIFFUSE    5
  #define D3DVSDE_SPECULAR   6
  #define D3DVSDE_TEXCOORD0   7
  #define D3DVSDE_TEXCOORD1   8
  #define D3DVSDE_TEXCOORD2   9
  #define D3DVSDE_TEXCOORD3   10
  #define D3DVSDE_TEXCOORD4   11
  #define D3DVSDE_TEXCOORD5   12
  #define D3DVSDE_TEXCOORD6   13
  #define D3DVSDE_TEXCOORD7   14
  #define D3DVSDE_POSITION2   15
  #define D3DVSDE_NORMAL2    16
v(0)始终表示position?

作者: yuanye15978   发布时间: 2011-12-07

需要在vs汇编里面
dcl_position0 v0
dcl_color v1
dcl_texcoord v2

position0不一定是v0,你可以修改的。

里面的position这些都可以有多个,比如关键帧动画插值时,输入流里面就会有2个position,用于顶点混合
这时就需要用dcl_position0 和dcl_position1 来分别指定2个pos。

如果只有1个pos的话,dcl_position和 dcl_position0等价。

texcoord0 ,color0 这些都一样


作者: Kevin_qing   发布时间: 2011-12-07

热门下载

更多