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);
DirectX HLSL相关基础的更多相关文章
- iOS蓝牙开发(二)蓝牙相关基础知识
原文链接: http://liuyanwei.jumppo.com/2015/07/17/ios-BLE-1.html iOS蓝牙开发(一)蓝牙相关基础知识: 蓝牙常见名称和缩写 MFI ====== ...
- Linux 相关基础笔记
html,body { } .CodeMirror { height: auto } .CodeMirror-scroll { } .CodeMirror-lines { padding: 4px 0 ...
- linux设备驱动归纳总结(二):模块的相关基础概念【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-59415.html linux设备驱动归纳总结(二):模块的相关基础概念 系统平台:Ubuntu 10 ...
- linux设备驱动归纳总结(一)内核的相关基础概念【转】
本文转载自:http://blog.chinaunix.net/uid-25014876-id-59413.html linux设备驱动归纳总结(一):内核的相关基础概念 xxxxxxxxxxxxxx ...
- 深入理解mysql之BDB系列(1)---BDB相关基础知识
深入理解mysql之BDB系列(1) ---BDB相关基础知识 作者:杨万富 一:BDB体系结构 1.1.BDB体系结构 BDB总体的体系结构如图1.1所看到的,包括五个子系统(见图1.1 ...
- 【RAC】RAC相关基础知识
[RAC]RAC相关基础知识 1.CRS简介 从Oracle 10G开始,oracle引进一套完整的集群管理解决方案—-Cluster-Ready Services,它包括集群连通性.消息和锁. ...
- NIO相关基础篇一
转载请注明原创出处,谢谢! 说在前面 NIO相关知识是很多后续的一些基础知识,所以今天这篇文章仅仅是简单介绍,后续会继续有一到二篇相关NIO内容. 什么是NIO Java NIO( New IO) 是 ...
- NIO相关基础篇二
转载请注明原创出处,谢谢! 上篇NIO相关基础篇一,主要介绍了一些基本的概念以及缓冲区(Buffer)和通道(Channel),本篇继续NIO相关话题内容,主要就是文件锁.以及比较关键的Selecto ...
- NIO相关基础篇三
转载请注明原创出处,谢谢! 说在前面 上篇NIO相关基础篇二,主要介绍了文件锁.以及比较关键的Selector,本篇继续NIO相关话题内容,主要谈谈一些Linux 网络 I/O模型.零拷贝等一些内容, ...
随机推荐
- Java判断回文数算法简单实现
好久没写java的代码了, 今天闲来无事写段java的代码,算是为新的一年磨磨刀,开个头,算法是Java判断回文数算法简单实现,基本思想是利用字符串对应位置比较,如果所有可能位置都满足要求,则输入的是 ...
- maven引入json-lib的正确方法
<dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</art ...
- 歌词文件解析(一):LRC格式文件的解析
LRC是英文lyric(歌词)的缩写,被用做歌词文件的扩展名.以lrc为扩展名的歌词文件可以在各类数码播放器中同步显示.LRC 歌词是一种包含着“*:*”形式的“标签(tag)”的基于纯文本的歌词专用 ...
- a configuration error occurred during startup. place verify the preference field whth the prompt:TomcatJDK name:
错误一:安装Tomcat的时候出现了错误,这里要是找不到Tomcat6.0我们可以设置其enbale显示就可以,上面的错误解决办法: 错误二:在eclipse中启动Tomcat6.0的时候现在说800 ...
- 数学 - Whu 1603 - Minimum Sum
Minimum Sum Problem's Link ------------------------------------------------------------------------- ...
- 【原创】Kakfa utils源代码分析(三)
Kafka utils包最后一篇~~~ 十五.ShutdownableThread.scala 可关闭的线程抽象类! 继承自Thread同时还接收一个boolean变量isInterruptible表 ...
- 利用chrome调试JavaScript代码
看见网上很多人问怎么用chrome调试JavaScript代码,我也对这个问题抱着疑问,但是没有找到一篇能用的中文文章(可能我的google有问题),也不知道怎么点出一篇E文的,感觉作者写得不错,所以 ...
- Model元数据提供机制小结
在最开始先我得说说我看这部分的情况,最开始被各种ModelMetadata和各种ModelMetadataProvider给搞晕了,就几页书花了我好大的精力去看,直到后来看了一幅类图,细细看各个类之间 ...
- C#控制台程序的参数解析类库 CommandLine简单使用说明
前言 C#开发的控制台程序,默认接收string[] args参数.如果有多个参数需要输入时,可以按照顺序依次输入:但如果有些参数不是必选的,或者有些参数中间需要有空格比如时间“2016-05-18 ...
- 使用DocX开源组件,实现动态数据的填充。
1.先解释一下,什么叫做动态数据,动态数据指的是,一条数据的格式固定,但数据的条数不固定. 2.应用环境,在一个表格当中如果,现在表格有三行n列,如果你需要在表格第一行后添加同等规格的一行或n行,应该 ...