zoukankan      html  css  js  c++  java
  • 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);)

  • 相关阅读:
    [bzoj]2131: 免费的馅饼
    [bzoj]1098: [POI2007]办公楼biu
    [luogu]P2051 [AHOI2009]中国象棋
    [luogu]P2825 [HEOI2016/TJOI2016]游戏
    MSSQL To MongoDB Tool (FREE)
    虚拟机和Linux安装详解
    Maven
    springmvc的文件上传和下载,框架集成
    json详解以及fastjson使用
    JSP——语法,指令,表达式语言(EL),JSTL标签
  • 原文地址:https://www.cnblogs.com/italysue/p/9369839.html
Copyright © 2011-2022 走看看