> # NAME

> cgD3D11LoadProgram - create a D3D shader and enable the expanded interface routines

> # SYNOPSIS

>       #include <Cg/cgD3D11.h>

>       HRESULT cgD3D11LoadProgram( CGprogram program,
>                                   UINT flags );

> # PARAMETERS

> program

>   A program whose compiled output is used to create the D3D shader.

> flags

>   The flags to pass to D3DCompile. See the D3D documentation for a list of valid flags.

> # RETURN VALUES

> Returns D3D_OK if the function succeeds or program has already been loaded.

> Returns the D3D failure code if the function fails due to a D3D call.

> # DESCRIPTION

> cgD3D11LoadProgram creates a D3D shader for a program and enables use of expanded interface routines for that program.

> cgD3D11LoadProgram compiles the compiled Cg output for program using D3DCompile and then creates a D3D shader using ID3D11Device::CreateVertexShader or ID3D11Device::CreatePixelShader depending on the program's profile.

> The D3D shader handle is not returned. If the shader handle is desired by the application, the expanded interface should not be used for that program.

> # EXAMPLES

>       // vertexProg is a CGprogram using a vertex profile
>       // pixelProg is a CGprogram using a pixel profile
>       ...
>       HRESULT hr1 = cgD3D11LoadProgram(vertexProg, 0);
>       HRESULT hr2 = cgD3D11LoadProgram(pixelProg, 0);

> # ERRORS

> E_FAIL is generated if a D3D function returns an error.

> E_FAIL is returned if program's profile is not a supported D3D profile.

> E_FAIL is returned if a required D3D device is NULL. This usually occurs when an expanded interface routine is called but a D3D device has not been set with cgD3D11SetDevice.

> # HISTORY

> cgD3D11LoadProgram was introduced in Cg 3.0.

> # SEE ALSO

> cgD3D11SetDevice