【笔记】 关于D3DComplie函数
函数:
【函数:http://msdn.microsoft.com/zh-cn/library/windows/desktop/dd607324%28v=vs.85%29.aspx】
笔记:
1、D3DComplie可以编译各种型号的Shader,其编译的Shader覆盖Shader级别9_1(DX9.0)到11(DX11),以及D3DXEffects
2、如果在D3DComplie里面指定Shader等级为vs_3_0或者ps_3_0这样低于DX10版本的Shader时所编译出来的Shader只能在DX9 API上使用
3、
如果希望在DX10/DX11
API上只使用DX9等级特性(如vs_3_0),需要写成vs_4_0_level_9_3。否则,尽管编译能够成功,但是将无法使用
ID3D10Device.CreateVertexShader/ID3D10Device.CreatePixelShader创建对应的
Shader。会提示
CreateVertexShader: Encoded Vertex Shader size doesn't match specified size.
【特性等级:http://msdn.microsoft.com/zh-cn/library/windows/desktop/jj215820%28v=vs.85%29.aspx#direct3d_9.1__9.2__and_9.3_feature_levels】
4、调用D3DComplie的时候可以选择指定内存中的代码或者来自文件。但是对于从文件中读取代码可能存在一定问题,不推荐使用。
5、此外vs_4_0_level_9_3中VertexShader输出坐标时应使用SV_POSITION(使用POSITION会报错)。同时PixelShader要写成SV_TARGET(使用COLOR会报错)