码迷,mamicode.com
首页 > 其他好文 > 详细

DirectX9 着色器学习(二)

时间:2018-07-26 10:15:36      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:ace   amp   编译   权重   纹理   strong   NPU   指针   get   

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 着色器学习(二)

标签:ace   amp   编译   权重   纹理   strong   NPU   指针   get   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!