|
// 加载VShader代码
LPD3DXBUFFER pCode= VShaderCreateAssemble(szFileName, pPackFile);
DWORD *p= pCode ? (DWORD *)pCode->GetBufferPointer() : NULL;
// 创建VS
DWORD hShader= (DWORD)INVALID_HANDLE_VALUE;
if (FAILED(m_pD3DDevice->CreateVertexShader(dwToken, p, &hShader, NULL)))
hShader= (DWORD)INVALID_HANDLE_VALUE;
SAFE_RELEASE(pCode);
return hShader;
VShaderCreateAssemble(szFileName, pPackFile)的作用是加载指定的vsh文件,如果文件存在则返回有效的LPD3DXBUFFER,否则返回NULL
我在程序中指定了szFileName且正确得到了LPD3DXBUFFER,则CreateVertexShader总是FAILED。如果szFileName设为NULL,则VShaderCreateAssemble返回NULL, 也就是p为NULL的时候,则CreateVertexShader才为成功,可是这样就没法运行vertexshader了。
这可能是什么问题呢? |
|