> # NAME

> cgCreateState - create a state definition

> # SYNOPSIS

>       #include <Cg/cg.h>

>       CGstate cgCreateState( CGcontext context,
>                              const char * name,
>                              CGtype type );

> # PARAMETERS

> context

>   The context in which to define the new state.

> name

>   The name of the new state.

> type

>   The type of the new state.

> # RETURN VALUES

> Returns a handle to the newly created CGstate.

> Returns NULL if there is an error.

> # DESCRIPTION

> cgCreateState adds a new state definition to the context. When a CgFX file is added to the context, all state assignments in the file must have already been defined via a call to cgCreateState or cgCreateArrayState.

> Applications will typically call cgSetStateCallbacks shortly after creating a new state with cgCreateState.

> # EXAMPLES

> Example callback functions for a state to register:

>       CGbool foo_set( CGstateassignment sa )
>       {
>         int nVals = 0;
>         const CGbool *val = cgGetBoolStateAssignmentValues( sa, &nVals );
>         printf( "\nFooState set called with value %d.\n", *val );
>         return CG_TRUE;
>       }

>       CGbool foo_reset( CGstateassignment sa )
>       {
>         printf( "\nFooState reset called.\n" );
>         return CG_TRUE;
>       }

>       CGbool foo_validate( CGstateassignment sa )
>       {
>         printf( "FooState validate called.\n" );
>         return CG_TRUE;
>       }

> Registering the state:

>       // Create and register new state FooState
>       CGstate fooState = cgCreateState( myCgContext, "FooState", CG_BOOL );
>       cgSetStateCallbacks( fooState, foo_set, foo_reset, foo_validate );

> # ERRORS

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

> CG_INVALID_PARAMETER_ERROR is generated if name is NULL or not a valid identifier, or if type is not a simple scalar, vector, or matrix-type. Array-typed state should be created with cgCreateArrayState.

> # HISTORY

> cgCreateState was introduced in Cg 1.4.

> # SEE ALSO

> cgCreateArrayState, cgGetStateContext, cgGetStateName, cgGetStateType, cgIsState, cgSetStateCallbacks, cgGLRegisterStates, cgD3D9RegisterStates, cgCreateContext