【D3D11游戏编程】学习笔记九:编译Effect的方法

本文介绍了在D3D11游戏中编译Effect的三种方法:1) 运行期编译,通过ID3D10Blob接口存放编译内容;2) 使用Effect编译工具fxc预编译并生成二进制文件;3) 让Visual Studio在Build时自动编译Effect。通过这些方法,可以优化程序性能,确保Shader代码无误。
摘要由CSDN通过智能技术生成

        (注:【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
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值