> ## Name

> cgD3D11BindProgram - activate a program with D3D

> ## Synopsis

>     #include <Cg/cgD3D11.h>

>     HRESULT cgD3D11BindProgram( CGprogram program );

> ## Parameters

> program
>   The program to activate with D3D.

> ## Return Values

> Returns D3D_OK if the function succeeds.

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

> ## Description

> cgD3D11BindProgram activates a program with D3D. The program is activated using ID3D11DeviceContext::VSSetShader or ID3D11DeviceContext::PSSetShader depending on the program's profile type.

> D3D allows only one vertex shader and one pixel shader to be active at any given time, so activating a program of a given type implicitly deactivates any other program of a that type.

> ## Examples

>     // vertexProg and pixelProg are CGprograms initialized elsewhere
>     // pDevContext is an ID3D11DeviceContext interface intialized elsewhere
>     ...
>     HRESULT hr = cgD3D11BindProgram(vertexProg);
>     HRESULT hr2 = cgD3D11BindProgram(pixelProg);

> ## Errors

> E_FAIL is returned if program was not loaded with the cgD3D11LoadProgram.

> 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

> cgD3D11BindProgram was introduced in Cg 3.0.

> ## See Also

> cgD3D11LoadProgram, cgD3D11SetTextureParameter