Создание шейдеров D3DX

#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.