> ## Name

> cgSetProgramBuffer - set a buffer for a program

> ## Synopsis

>     #include <Cg/cg.h>

>     void cgSetProgramBuffer( CGprogram program,
>                              int bufferIndex,
>                              CGbuffer buffer );

> ## Parameters

> program
>   The program for which the buffer will be set.
> bufferIndex
>   The buffer index of program to which buffer will be bound.
> buffer
>   The buffer to be bound.

> ## Return Values

> None.

> ## Description

> cgSetProgramBuffer sets the buffer for a given buffer index of a program. A NULL buffer handle means the given buffer index should not be bound to a buffer.

> bufferIndex must be non-negative and within the program's range of buffer indices. For OpenGL programs, bufferIndex can be 0 to 11. For Direct3D10 programs, bufferIndex can be 0 to 15.

> When the next program bind operation occurs, each buffer index which is set to a valid buffer handle is bound (along with the program) for use by the 3D API. No buffer bind operation occurs for buffer indices bound to a NULL buffer handle.

> ## Examples

> cgSetProgramBuffer( myProgram, 2, myBuffer );

> ## Errors

> CG_INVALID_PROGRAM_HANDLE_ERROR is generated if program is not a valid program handle.

> CG_INVALID_BUFFER_HANDLE_ERROR is generated if buffer is not a valid buffer.

> CG_BUFFER_INDEX_OUT_OF_RANGE_ERROR is generated if bufferIndex is not within the valid range of buffer indices for program.

> ## History

> cgSetProgramBuffer was introduced in Cg 2.0.

> ## See Also

> cgCreateBuffer, cgGetProgramBuffer, cgGLBindProgram, cgD3D9BindProgram