Поделиться через


Константы 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
/Гис
Принудительно выполняет строгую компиляцию 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_ALIASкомпилятора , D3DCOMPILE_ENABLE_UNBOUNDED_DESCRIPTOR_TABLESи D3DCOMPILE_ALL_RESOURCES_BOUND являются новыми, начиная с D3dcompiler_47.dll, поставляемых с пакетом SDK для Windows 8.1 или более поздней версии.

Примечание

Константы D3DCOMPILE_DEBUG_NAME_FOR_SOURCE компилятора и D3DCOMPILE_DEBUG_NAME_FOR_BINARY являются новыми, начиная с D3dcompiler_47.dll, поставляемых с пакетом SDK обновления Windows 10 Fall Creator (версия 16299) или более поздней версии. См. эту статью в блоге.

Примечание

Для DirectX 12, шейдерная модель 5.1, API D3DCompile и FXC являются устаревшими. Вместо этого используйте модель шейдера 6 через DXIL. См. GitHub.

Требования

Требование Значение
Заголовок
D3DCompiler.h

См. также раздел

Константы D3DCompiler