NAME

cgSetParameterSettingMode - set the parameter setting mode for a context

SYNOPSIS

  #include <Cg/cg.h>

  void cgSetParameterSettingMode( CGcontext context,
                                  CGenum parameterSettingMode );

PARAMETERS

context

The context in which to set the parameter setting mode.

parameterSettingMode

The mode to which context will be set. Must be one of the following :

  • CG_IMMEDIATE_PARAMETER_SETTING
  • CG_DEFERRED_PARAMETER_SETTING

RETURN VALUES

None.

DESCRIPTION

cgSetParameterSettingMode controls the behavior of the context when setting parameters. With deferred parameter setting, the corresponding 3D API parameter is not immediately updated by cgSetParameter commands. If the application does not need to access these 3D API parameter values, then this mode allows improved performance by avoiding unnecessary 3D API calls.

Parameters of variability CG_VARYING are never deferred.

When the parameter setting mode is CG_DEFERRED_PARAMETER_SETTING, non-erroneous cgSetParameter commands record the updated parameter value but do not immediately update the corresponding 3D API parameter. Instead the parameter is marked internally as update deferred. The 3D API commands required to update any program parameters marked update deferred are performed as part of the next program bind (see cgGLBindProgram, cgD3D9BindProgram, or cgD3D8BindProgram).

If a context's parameter setting mode was CG_DEFERRED_PARAMETER_SETTING and one or more parameters are marked update deferred, changing the parameter setting mode to CG_IMMEDIATE_PARAMETER_SETTING does not cause parameters marked update deferred to be updated. The application can use cgUpdateProgramParameters or cgUpdatePassParameters to force the updating of parameters marked update deferred.

parameterSettingMode must be one of the following enumerants :

EXAMPLES

Change context to use deferred parameter updates:

  cgSetParameterSettingMode(myCgContext, CG_DEFERRED_PARAMETER_SETTING);

Change context to its initial behavior of performing parameter updates immediately:

  cgSetParameterSettingMode(myCgContext, CG_IMMEDIATE_PARAMETER_SETTING);

ERRORS

CG_INVALID_CONTEXT_HANDLE_ERROR is generated if context is not a valid context.

CG_INVALID_ENUMERANT_ERROR is generated if parameterSettingMode is not CG_IMMEDIATE_PARAMETER_SETTING or CG_DEFERRED_PARAMETER_SETTING.

HISTORY

cgSetParameterSettingMode was introduced in Cg 2.0.

SEE ALSO

cgGetParameterSettingMode, cgUpdateProgramParameters, cgUpdatePassParameters, cgSetParameter, cgSetParameterVariability, cgGetParameterVariability, cgGLBindProgram, cgD3D9BindProgram, cgD3D8BindProgram