首页 > 其他 > 详细

DirectX9 着色器学习(二)

时间:2018-07-26 10:04:19      阅读:218      评论:0      收藏:0      [点我收藏+]

DirectX9 中的着色器包括:Vertex shader 和 Pixel shader。首先学习顶点着色器VS,它替换了固定功能管线中的变换(Transformation)和光照(Lighting)阶段。

顶点声明:

1.  通过 D3DVERTEXELEMENT9 结构的数据描述顶点

2.  创建顶点声明

      HRESULT  IDirect3DDevice9::CreateVertexDeclaration(CONST D3DVERTEXELEMENT9  *PVertexElements, IDirect3DVertexDeclaration9 **ppDec);

      ppDec:返回创建的接口指针

3.  使用顶点声明

     Device->SetVertexDeclaration(_decl);

 

顶点数据用途:

定义顶点声明的元素到顶点着色器的Input结构的数据成员

struct VS_INPUT

{

     vector position: POSITION; //位置

     vector normal: NORMAL0;  //法线向量

     vector faceNormal1: NORMAL1;

     vector faceNormal2: NORMAL2;

}受支持的顶点着色器用途有:位置、混合权重、混合索引、法线向量、顶点大小、散射颜色、镜面颜色、纹理坐标等

 

使用顶点着色器的步骤:

1.编写并编译顶点着色器;

       (D3DXCompileShaderFromFile()返回已编译着色器代码的指针,作为step2的输入)

2.创建一个IDirect3DVertexShader9接口以引用已编译的着色器代码上的顶点着色器;

      (CreateVertexShader((DWORD*)shader->GetBufferPoint(),&ToonShader),返回一个接口指针,作为step3的输入)

3.用IDirect3Device9::SetVertexShader方法使用这个顶点着色器。

     (Device->SetVertexShader(ToonShader);)

4.销毁顶点着色器

       (d3d::Release<IDirect3DVertexShader9 *>(ToonShader);)

 

DirectX9 着色器学习(二)

原文:https://www.cnblogs.com/italysue/p/9369839.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!