HLSL

语法:
当中定义了matrix,vector,float2,...等类型变量。
向量vector<type,n>type表示向量内部元素的类型,n表示几维。默认是4维float向量。
matrix<t,m,n>同样t表示类型,m*n维矩阵默认是4*4 float矩阵
其实上面的两个类型的另外写法可以直接写成typeN和typeMxN
例如float2表示2维浮点型向量,float2x3表示2*3的float矩阵,但是这里要注意它们维数要小于4
反问向量可以通过数组形式如a[1]这样访问,也可以通过x,y,z,w或r,g,b,a等成员方式访问
矩阵通过M._11,_12...._44等方式访问
结构定义与c++一样,但不能有成员函数。
typedef关键字和c++一样的用法。

程序流程与c++基本一样,但是不包括switch case

自定义函数与c++基本一样,有几点不同
1.参数总是按值传递
2.不支持递归
3.总是内联
另外提供了in out和inout几个修饰符指定参数是传入还是传出。

常量表。
ID3DConstantTable

0.编译着色器
HRESULT D3DXCompileShaderFromFile(
  LPCSTR pSrcFile,
  CONST D3DXMACRO* pDefines,
  LPD3DXINCLUDE pInclude,
  LPCSTR pFunctionName,
  LPCSTR pTarget,
  DWORD Flags,
  LPD3DXBUFFER* ppShader,
  LPD3DXBUFFER * ppErrorMsgs,
  LPD3DXCONSTANTTABLE * ppConstantTable
);
参数
1.表示着色器源代码文件。
2.可选,指定为NULL.
3.指向一个ID3DXInclude的借口指针,我们可以自己实现,重载默认的include行为。使用默认将其设置为NULL.
4.入口函数名字,所以说着色器入口函数名字是可变的。
5.着色器版本名字,有效顶点着色器版本名有vs_1_1,vs_2_0,vs_2_sw.像素着色器有ps_1_1...ps_1_4,ps_2_0,ps_2_sw.
6.编译选项,0表示没有,有效选项有D3DXSHANDER_DEBUG,编译器写出调试信息。
  D3DXSHANDER_SKIPVALIDATION,表示不做代码确认,D3DXSHANDER_SKIPOPTIMIZATION,跳过代码优化。
7.编译后的代码,可以作为创建着色器函数的参数。
8.错误信息的返回。
9.着色器对应的参数表。


1.获取常量句柄
D3DXHANDLE ID3DConstantTable::GetConstantByName(D3DXHANDLE hConstant,LPSCTR pName);
hConstant如果是获取一个结构内部的某个成员的话,那该参数表示这个结构的常量句柄,否则为0。
pName常量名字。


2.设置常量值
HRESULT ID3DConstantTable::SetXXX(LPDIRECT3DDEVICE9 pDevice,D3DXHANDLE hConstant,XXX value);

 

 

http://hi.baidu.com/mudgao/blog/item/38e217d3964cb43f960a1638.html

 

 

http://topic.youkuaiyun.com/u/20100327/00/33647c35-89b7-4eb8-827a-61ccc7abb8e2.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值