#c #directx #shader
#c #directx #шейдер
Вопрос:
Возможно ли создавать шейдеры без использования функций D3DX?
Ответ №1:
Компилятор HLSL, начиная с D3D9, является частью библиотеки D3DX. Чтобы написать свои шейдеры на HLSL, вы должны использовать D3DX.
Однако есть IDirect3DDevice9::CreatePixelShader
и IDirect3DDevice9::CreateVertexShader
, которые создают дескриптор шейдера из байтового кода шейдера, то есть из того, что генерируется компилятором HLSL.
Вы можете запустить компилятор HLSL в автономном режиме (см. D3DXCompileShader
), сохранить машинный код в файл и загрузить его во время выполнения, используя вышеупомянутые функции. К сожалению, это означает, что вы не можете полагаться на работу, которая в противном случае выполняется платформой D3DX. Загрузка ваших констант и оптимизация изменений в этом случае полностью зависит от вас.
Комментарии:
1. Смотрите HLSL, FXC и D3DCompile , в которых отмечается, что API D3DCompile можно использовать непосредственно для шейдеров DX9 Shader Model 2.0 или Shader Model 3.0.