DirectX9 着色器学习

Posted italysue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DirectX9 着色器学习相关的知识,希望对你有一定的参考价值。

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 着色器学习的主要内容,如果未能解决你的问题,请参考以下文章

pow(0, 2.2) 在 hlsl 像素着色器中给出 1?

学习WebGL:着色器绘制一个点

我的OpenGL学习进阶之旅着色器和程序(上)------着色器

我的OpenGL学习进阶之旅着色器和程序(上)------着色器

OpenGL学习整理------着色器

WebGL学习系列-片元着色器简介