> ## Name

> cgCompileProgram - compile a program object

> ## Synopsis

>     #include <Cg/cg.h>

>     void cgCompileProgram( CGprogram program );

> ## Parameters

> program
>   The program object to compile.

> ## Return Values

> None.

> ## Description

> cgCompileProgram compiles the specified Cg program for its target profile. A program must be compiled before it can be loaded (by the API-specific part of the runtime). It must also be compiled before its parameters can be inspected.

> The compiled program can be retrieved as a text string by passing CG_COMPILED_PROGRAM to cgGetProgramString.

> Certain actions invalidate a compiled program and the current value of all of its parameters. If one of these actions is performed, the program must be recompiled before it can be used. A program is invalidated if the program source is modified, if the compile arguments are modified, or if the entry point is changed.

> If one of the parameter bindings for a program is changed, that action invalidates the compiled program, but does not invalidate the current value of the program's parameters.

> ## Examples

>     if(!cgIsProgramCompiled(program))
>      cgCompileProgram(program);

> ## Errors

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

> CG_COMPILER_ERROR is generated if compilation fails.

> ## History

> cgCompileProgram was introduced in Cg 1.1.

> ## See Also

> cgIsProgramCompiled, cgCreateProgram, cgGetNextParameter, cgIsParameter, cgGetProgramString