|
|
不知道为什么一执行此函数就失败.
HRESULT hr;
LPD3DXBUFFER pCode;
TCHAR strVS[14] = _T("perpixlit.VSH");
if(FAILED(hr = D3DXAssembleShaderFromFile(strVS, NULL, NULL, 0, &pCode, NULL )))
return D3DERR_INVALIDCALL;
其中perpixlit.vsh是这样的:
vs.1.1
;transform position
m4x4 oPos,v4,c4
;tangent-space basis generation
m3x3 r3,v8,c0 ; generate normal
m3x3 r5,v3,c0 ; generate tangent
;generate binormal via cross product
mul r0,-r3.zxyw,r5.yzxw
mad r4,-r3.yzxw,r5.zxyw,-r0 ; r4 was used for storing binormal
;diffuse, transform the light vector
dp3 r6.x,r3,-c16
dp3 r6.y,r4,-c16
dp3 r6.z,r5,-c16
;light in oD0
mad oD0.xyz,r6.xyz,c20,c20 ; multiply by 0.5f then add 0.5f
;texture coordinates output to oT#
mov oT0.xy,v7.xy
mov oT1.xy,v7.xy
急啊,支两招吧! 谢谢. |
|