zoukankan      html  css  js  c++  java
  • DirectX HLSL相关基础

     

    DirectX HLSL相关

      

      顶点着色器可用软件顶点运算方式来模拟,即在创建设备时,将设备行为标记设定为:

      D3DCREATE_SOFTWARE_VERTEXPROCESSING

     

      在记事本中编写着色器代码,使用函数D3DXCompileShaderFromFile对着色器文件进行编译。

     

      每个着色器都用常量表来存储其变量。

      为了使应用程序能够访问着色器的常量表,D3DX库提供了接口ID3DXConstantTable

     

      获取常量的句柄:

      D3DXHANDLE ID3DXConstantTable :: GetConstantByName (D3DXHANDLE hConstant,LPSTR pName);

      常量的设置:

    HREST ID3DXConstantTable :: SetXXX(
    LPDIRECT3DDEVICE9 pDevice,
    D3DXHANDLE hConstant,
    XXX value);


      如果要对数组进行设置:

    HREST ID3DXConstantTable :: SetVectorArray(
    LPDIRECT3DDEVICE9 pDevice,
    D3DXHANDLE hConstant,
    CONST D3DXVECTOR4* pVector,
    UINT Count);

      设置常量的默认值:

      HRESULT ID3DXConstantTable:: SetDefaults(LPDIRECT3DDEVICE pDevice);

      

      

      顶点声明的创建:

    HRESULT CreateVertexDeclaration(
    CONST D3DVERTEXELEMENT9* pVertexElements,
    IDirect3DVertexDeclaration9** ppDecl)

      创建一种效果:

    HRESULT D3DXCreateEffectFromFile(
    LPDIRECT3DDEVICE9 pDevice,
    LPCTSTR pSrcFile,
    CONST D3DXMACRO *pDefines,
    LPD3DXINCLUDE pInclude,
    DWORD Flags,
    LPD3DXEFFECTPOOL pPool,
    LPD3DXEFFECT *ppEffect,
    LPD3DXBUFFER *ppCompilationErrors);

      获取效果文件中的变量:

    D3DXHANDLE ID3DXEffect::GetParameterByName(
    D3DXHANDLE hParameter,
    LPCSTR pName);

    使用顶点着色器的步骤:

      1.编写顶点着色器程序,并进行编译。

      2.创建一个IDirect3DVertexShader9 接口的对象,以表示基于所编译的着色器代码的顶点着色器。

      3.用IDirect3DDevice9::SetVertexShader方法启用顶点着色器。

     

    使用像素着色器的步骤:

      1.编写像素着色器程序并进行编译。

      2.创建一个IDirect3DPixelShader9接口对象,以表示基于经过编译的着色器代码的像素着色器。

      3.用IDirect3DDevice::SetPixelShader方法启用像素着色器。

    使用一种效果:

      1.获取效果文件中您希望使用的手法(technique)的句柄。

      D3DXHANDLE ID3DXEffect ::GetTechniqueByName(LPCSTR pName);

      2.激活希望使用的手法。

      HRESULT ID3DXEffect :: SetTechnique(D3DXHANDLE hTechnique);

      (激活之前需要用当前设备对其进行验证)

      HRESULT ID3DXEffect ::ValidateTechnique(D3DXHANDLE hTechnique);

      3.启用当前处于活动状态的手法。

      HRESULT ID3DXEffect :: Begin(UINT * pPasses, DWORD Flags);

      4.对于活动手法中的每一条绘制路径,绘制几何目标体。

      一种手法(Technique)可能包含多条路径(pass),所以我们必须在每条绘制路径中将几何体绘制一次。

      HRESULT ID3DXEffect ::BeginPass(UINT Pass);

      HRESULT EndPass();

      5.终止当前处于活动状态的手法。

      HRESULT ID3DXEffect :: End(VOID);

  • 相关阅读:
    C#操作EXcel
    ADO.NET 导出 Excel 文件
    基于jQuery的数字键盘插件
    Python爬虫(三)——正则表达式
    python爬虫(二)——第一个爬虫程序
    python爬虫学习(一)——爬虫的工作原理
    斜率优化DP学习笔记
    可持久化线段树学习笔记
    尺取法学习笔记
    分层图学习笔记
  • 原文地址:https://www.cnblogs.com/mengdd/p/3237589.html
Copyright © 2011-2022 走看看