(注:【D3D11游戏编程】学习笔记系列由CSDN作者BonChoix所写,转载请注明出处:http://blog.csdn.net/BonChoix,谢谢~)
在D3D11应用程序中,对于写好的Effect程序进行编译有如下几种常见方法:
1. 在运行期编译
用这种方法,我们只管写好Effect代码即可,不用关心其编译问题,而是在C++程序中,通过调用相应的API先对Effect进行编译,得到编译后的内容,再用之来创建Effect接口。在上个例子绘制立方体时我们用的即这个方法,其相关代码再看一下:
//两个ID3D10Blob用来存放编译好的shader及错误消息
ID3D10Blob *shader(NULL);
ID3D10Blob *errMsg(NULL);
//编译effect
HRESULT hr = D3DX11CompileFromFile(L"FX/BasicDraw.fx",0,0,0,"fx_5_0",flag,0,0,&shader,&errMsg,0);
//如果有编译错误,显示之
if(errMsg)
{
MessageBoxA(NULL,(char*)errMsg->GetBufferPointer(),"ShaderCompileE