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

  • 相关阅读:
    linux常用命令之--用户与用户组管理命令
    linux常用命令之--文本编辑和文本内容查看命令
    linux常用命令之--目录与文件的操作命令
    linux的文件属性介绍、目录及路径表示方法
    scalatest的userguide
    SBT的用法
    性能工具列表
    ruby不能识别中文的一个坑
    基于Calabash-andriod的UI自动化测试(1)-环境和原理
    scala速成记录1
  • 原文地址:https://www.cnblogs.com/italysue/p/9369839.html
Copyright © 2011-2022 走看看