着色器类型

在效果中声明着色器变量的语法已从 Direct3D 9 更改为 Direct3D 10。

Direct3D 10 的着色器类型

使用着色器类型语法在 Direct3D 10) 中声明效果传递 (中的着色器变量:

SetPixelShader 编译 ( ShaderTarget、ShaderFunction ) ; SetGeometryShader 编译 ( ShaderTarget、ShaderFunction ) ; SetVertexShader 编译 ( 着色器Target、ShaderFunction ) ;

参数

说明
SetXXXShader
创建着色器对象的 Direct3D API 调用。 可以是: SetPixelShaderSetGeometryShaderSetVertexShader
ShaderTarget
要编译的着色器模型。 这对任何目标(包括所有 Direct3D 9 目标和 着色器模型 4 目标)有效:vs_4_0、gs_4_0和ps_4_0。
ShaderFunction
包含着色器入口点函数的名称的 ASCII 字符串;这是调用着色器时开始执行的函数。 (...) 表示着色器参数;这些参数与传递给着色器创建 API 的参数相同: VSSetShaderGSSetShaderPSSetShader

示例

下面是一个示例,该示例创建为特定着色器模型编译的顶点着色器和像素着色器对象。 在 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
一个着色器变量,它表示已编译的着色器。 可以是: PixelShaderVertexShader
ShaderTarget
要编译的 着色器模型 ;取决于着色器变量的类型。
ShaderFunction (...)
包含着色器入口点函数的名称的 ASCII 字符串;这是调用着色器时开始执行的函数。 (...) 表示着色器参数;这些参数与传递给着色器创建 API 的参数相同: SetVertexShaderSetPixelShader

示例

下面是为特定着色器模型编译的顶点着色器和像素着色器对象的示例。

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

另请参阅

DirectX HLSL) (数据类型