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


Тип шейдера

Синтаксис для объявления переменной шейдера в эффекте изменен с Direct3D 9 на Direct3D 10.

Тип шейдера для Direct3D 10

Объявите переменную шейдера в проходе эффекта (в Direct3D 10) с помощью синтаксиса типа шейдера:

SetPixelShader Compile( ShaderTarget, ShaderFunction ); SetGeometryShader Compile( ShaderTarget, ShaderFunction ); SetVertexShader Compile( ShaderTarget, ShaderFunction );

Параметры

Элемент Описание
SetXXXShader
Вызов API Direct3D, который создает объект шейдера. Может быть: SetPixelShader , SetGeometryShader или SetVertexShader.
ШейдерЦель
Модель шейдера для компиляции. Это допустимо для любого целевого объекта, включая все целевые объекты Direct3D 9 и целевые объекты модели 4 шейдера : vs_4_0, gs_4_0 и ps_4_0.
ШейдерФункции
Строка ASCII, содержащая имя функции точки входа шейдера; это функция, которая начинает выполнение при вызове шейдера. (...) представляет аргументы шейдера; Это те же аргументы, которые передаются в API создания шейдера: VSSetShader , GSSetShader или PSSetShader.

Пример

Ниже приведен пример создания вершинного шейдера и объекта шейдера пикселей, скомпилированных для конкретной модели шейдера. В примере Direct3D 10 нет геометрического шейдера, поэтому для указателя задано значение NULL.

// Direct3D 10
technique10 Render
{
    pass P0
    {
        SetVertexShader( CompileShader( vs_4_0, VS() ) );
        SetGeometryShader( NULL );
        SetPixelShader( CompileShader( ps_4_0, PS() ) );
    }
}

Тип шейдера для Direct3D 9

Объявите переменную шейдера в проходе эффекта (для Direct3D 9) с помощью синтаксиса типа шейдера:

PixelShader = compile ShaderTarget ShaderFunction(...); VertexShader = compile ShaderTarget ShaderFunction(...);

Параметры

Элемент Описание
XXXShader
Переменная шейдера, представляющая скомпилированный шейдер. Может быть: PixelShader или VertexShader.
ШейдерЦель
Модель шейдера для компиляции; зависит от типа переменной шейдера.
ShaderFunction(...)
Строка ASCII, содержащая имя функции точки входа шейдера; это функция, которая начинает выполнение при вызове шейдера. (...) представляет аргументы шейдера; Это те же аргументы, которые передаются в API создания шейдера: SetVertexShader или SetPixelShader.

Пример

Ниже приведен пример вершинного шейдера и объекта шейдера пикселей, скомпилированных для конкретной модели шейдера.

// Direct3D 9
technique RenderSceneWithTexture1Light
{
    pass P0
    {          
        VertexShader = compile vs_2_0 RenderSceneVS( 1, true, true );
        PixelShader  = compile ps_2_0 RenderScenePS( true );
    }
}

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

Типы данных (DirectX HLSL)