博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DirectX HLSL相关基础
阅读量:5739 次
发布时间:2019-06-18

本文共 1935 字,大约阅读时间需要 6 分钟。

 

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

转载地址:http://rvyzx.baihongyu.com/

你可能感兴趣的文章
Spring之旅第八站:Spring MVC Spittr舞台的搭建、基本的控制器、请求的输入、表单验证、测试(重点)...
查看>>
数据结构与算法——常用排序算法及其Java实现
查看>>
你所不知的Webpack-多种配置方法
查看>>
React.js 集成 Kotlin Spring Boot 开发 Web 应用实例详解
查看>>
webpack+typescript+threejs+vscode开发
查看>>
python读excel写入mysql小工具
查看>>
如何学习区块链
查看>>
搜索问题的办法
查看>>
微信分销系统商城营销5大重点
查看>>
求职准备 - 收藏集 - 掘金
查看>>
htm5新特性(转)
查看>>
Linux-Centos启动流程
查看>>
php 设计模式
查看>>
后端技术精选 - 收藏集 - 掘金
查看>>
Laravel 服务容器
查看>>
mac安装kubernetes并运行echoserver
查看>>
多页架构的前后端分离方案(webpack+express)
查看>>
算法(第4版) Chapter 1
查看>>
前端技术选型的遗憾和经验教训
查看>>
“亲切照料”下的领域驱动设计
查看>>