• 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);)

  • 相关阅读:
    JavaScript的3种继承方式
    JavaScript回调函数及数组方法测试
    JavaScript实现二叉树算法
    SpringMVC之使用Servlet原生API作为参数
    HashMap详解
    面试笔记--Fast-Fail(快速失败)机制
    面试笔记--HashMap扩容机制
    org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 1
    多模块调用Service失败
    常用命令汇总
  • 原文地址:https://www.cnblogs.com/italysue/p/9369839.html
Copyright © 2020-2023  润新知