> ## Name

> cgCreateEffect - create an effect object from a source string

> ## Synopsis

>     #include <Cg/cg.h>

>     CGeffect cgCreateEffect( CGcontext context,
>                              const char * source,
>                              const char ** args );

> ## Parameters

> context
>   The context to which the new effect will be added.
> source
>   A string containing the effect's source code.
> args
>   If args is not NULL it is assumed to be an array of null-terminated strings that will be passed directly to the compiler as arguments. The last value of the array must be a NULL.

> ## Return Values

> Returns a CGeffect handle on success.

> Returns NULL if an error occurs.

> ## Description

> cgCreateEffect generates a new CGeffect object and adds it to the specified Cg context.

> If an error occurs cgGetLastListing can be called to retrieve any warning or error messages from the compilation process.

> ## Examples

> Creating an effect:

>     char *effectSource = ...;
>     CGcontext context = cgCreateContext();
>     CGeffect effect  = cgCreateEffect(context,
>                                       effectSource,
>                                       NULL);

> Iterating through the techniques in an effect:

>     CGtechnique technique = cgGetFirstTechnique(effect);
>     while (technique) {
>       // Do something with each technique
>       technique = cgGetNextTechnique(technique);
>     }

> ## Errors

> CG_INVALID_CONTEXT_HANDLE_ERROR is generated if context is not a valid context.

> CG_COMPILER_ERROR is generated if compilation fails.

> ## History

> cgCreateEffect was introduced in Cg 1.4.

> ## See Also

> cgCreateContext, cgCreateEffectFromFile, cgGetLastListing, cgGetFirstTechnique, cgGetTechniqueEffect, cgGetFirstEffect