D3DCOMPILE 常量

D3DCOMPILE 常量指定编译器编译 HLSL 代码的方式。

返回的常量 说明 注意
D3DCOMPILE_DEBUG
/ZI
指示编译器将调试文件/行/类型/符号信息插入输出代码。 请参阅D3DXSHADER_DEBUG
D3DCOMPILE_SKIP_VALIDATION
/Vd
指示编译器不要根据已知功能和约束验证生成的代码。 建议仅将此常量用于过去已成功编译的着色器。 DirectX 始终在将着色器设置为设备之前对其进行验证。 请参阅D3DXSHADER_SKIPVALIDATION
D3DCOMPILE_SKIP_OPTIMIZATION
/Od
指示编译器在代码生成过程中跳过优化步骤。 建议仅出于调试目的设置此常量。 请参阅D3DXSHADER_SKIPOPTIMIZATION
D3DCOMPILE_PACK_MATRIX_ROW_MAJOR
/Zpr
指示编译器在着色器的输入和输出上按行主顺序打包矩阵。 请参阅D3DXSHADER_PACKMATRIX_ROWMAJOR
D3DCOMPILE_PACK_MATRIX_COLUMN_MAJOR
/Zpc
指示编译器在着色器的输入和输出上按列主顺序打包矩阵。 这种类型的打包通常更有效,因为一系列点积随后可以执行矢量矩阵乘法。 请参阅D3DXSHADER_PACKMATRIX_COLUMNMAJOR
D3DCOMPILE_PARTIAL_PRECISION
/Gpp
指示编译器以部分精度执行所有计算。 如果设置此常量,编译的代码在某些硬件上的运行速度可能会更快。 请参阅 D3DXSHADER_PARTIALPRECISION
D3DCOMPILE_FORCE_VS_SOFTWARE_NO_OPT
指示编译器为下一个最高着色器配置文件编译顶点着色器。 此常量将打开调试并关闭优化。 此标志仅适用于 Direct3D 9。 请参阅D3DXSHADER_FORCE_VS_SOFTWARE_NOOPT
D3DCOMPILE_FORCE_PS_SOFTWARE_NO_OPT
指示编译器为下一个最高的着色器配置文件编译像素着色器。 此常量还会打开调试并关闭优化。 此标志仅适用于 Direct3D 9。 请参阅D3DXSHADER_FORCE_PS_SOFTWARE_NOOPT
D3DCOMPILE_NO_PRESHADER
/Op
指示编译器禁用 Preshaders。 如果设置此常量,编译器不会提取静态表达式进行计算。 此标志仅适用于旧版 Direct3D 9 和 Direct3D 10 效果 (FX) 。 请参阅D3DXSHADER_NO_PRESHADER
D3DCOMPILE_AVOID_FLOW_CONTROL
/Gfa
指示编译器尽可能不使用流控制构造。 请参阅D3DXSHADER_AVOID_FLOW_CONTROL
D3DCOMPILE_ENABLE_STRICTNESS
/Ges
强制严格编译,这可能不允许使用旧语法。 默认情况下,编译器对已弃用的语法禁用严格性。
D3DCOMPILE_IEEE_STRICTNESS
/Gis
强制 IEEE 严格编译,以避免可能破坏 IEEE 规则的优化。 请参阅D3DXSHADER_IEEE_STRICTNESS
D3DCOMPILE_ENABLE_BACKWARDS_COMPATIBILITY
/Gec
指示编译器使较旧的着色器能够编译到 5_0 目标。 请参阅 D3DXSHADER_ENABLE_BACKWARDS_COMPATIBILITY
D3DCOMPILE_OPTIMIZATION_LEVEL0
/O0
指示编译器使用最低优化级别。 如果设置此常量,编译器可能会生成较慢的代码,但生成代码的速度会更快。 以迭代方式开发着色器时设置此常量。 请参阅 D3DXSHADER_OPTIMIZATION_LEVEL0
D3DCOMPILE_OPTIMIZATION_LEVEL1
/O1
指示编译器使用第二个最低优化级别。 请参阅D3DXSHADER_OPTIMIZATION_LEVEL1
D3DCOMPILE_OPTIMIZATION_LEVEL2
/O2
指示编译器使用第二高的优化级别。 请参阅 D3DXSHADER_OPTIMIZATION_LEVEL2
D3DCOMPILE_OPTIMIZATION_LEVEL3
/O3
指示编译器使用最高优化级别。 如果设置此常量,编译器将生成可能的最佳代码,但这样做可能需要更长的时间。 当性能是最重要的因素时,为应用程序的最终生成设置此常量。 请参阅D3DXSHADER_OPTIMIZATION_LEVEL3
D3DCOMPILE_WARNINGS_ARE_ERRORS
/WX
指示编译器在编译着色器代码时将所有警告视为错误。 建议将此常量用于新的着色器代码,以便可以解决所有警告并降低难以找到的代码缺陷的数量。
D3DCOMPILE_RESOURCES_MAY_ALIAS
/res_may_alias
指示编译器假定无序访问视图 (UAV) 和着色器资源视图 (SRV) 可能为cs_5_0别名。 仅适用于 DirectX 12/着色器模型 5.1
D3DCOMPILE_ENABLE_UNBOUNDED_DESCRIPTOR_TABLES
/enable_unbounded_descriptor_tables
指示编译器启用无界描述符表。 仅适用于 DirectX 12/着色器模型 5.1
D3DCOMPILE_ALL_RESOURCES_BOUND
/all_resources_bound
指示编译器以确保绑定所有资源。 仅适用于 DirectX 12 /着色器型号 5.1
D3DCOMPILE_DEBUG_NAME_FOR_SOURCE
/Zss
生成调试 PDB 时,这会使用源文件和二进制文件作为哈希。
D3DCOMPILE_DEBUG_NAME_FOR_BINARY
/Zsb
生成调试 PDB 时,仅对哈希使用二进制文件名。

注意

D3DCOMPILE_RESOURCES_MAY_ALIASD3DCOMPILE_ENABLE_UNBOUNDED_DESCRIPTOR_TABLESD3DCOMPILE_ALL_RESOURCES_BOUND 编译器常量是新的,从 Windows 8.1 SDK 或更高版本附带的D3dcompiler_47.dll开始。

注意

D3DCOMPILE_DEBUG_NAME_FOR_SOURCED3DCOMPILE_DEBUG_NAME_FOR_BINARY 编译器常量是新的,从 Windows 10 Fall Creator 的 Update SDK (版本 16299) 或更高版本附带的D3dcompiler_47.dll开始。 请参阅此博客文章

注意

对于 DirectX 12,着色器模型 5.1、D3DCompile API 和 FXC 都已弃用。 请改用通过 DXIL 的着色器模型 6。 请参阅 GitHub

要求

要求
标头
D3DCompiler.h

另请参阅

D3DCompiler 常量