Name
cgConnectParameter - connect two parameters
Synopsis
#include <Cg/cg.h>
void cgConnectParameter( CGparameter from,
CGparameter to );
Parameters
- from
-
The source parameter.
- to
-
The destination parameter.
Return Values
None.
Description
cgConnectParameter connects a source (from) parameter to a destination
(to) parameter. The resulting connection forces the value and variability
of the destination parameter to be identical to the source parameter.
A source parameter may be connected to multiple destination parameters but
there may only be one source parameter per destination parameter.
cgConnectParameter may be used to create an arbitrarily deep tree.
A runtime error will be thrown if a cycle is
inadvertently created. For example, the following code snipped would
generate a CG_BIND_CREATES_CYCLE_ERROR :
CGcontext context = cgCreateContext();
CGparameter Param1 = cgCreateParameter(context, CG_FLOAT);
CGparameter Param2 = cgCreateParameter(context, CG_FLOAT);
CGparameter Param3 = cgCreateParameter(context, CG_FLOAT);
cgConnectParameter(Param1, Param2);
cgConnectParameter(Param2, Param3);
cgConnectParameter(Param3, Param1); /* This will generate the error */
If the source type is a complex type (e.g., struct, or array) the
topology and member types of both parameters must be identical. Each
correlating member parameter will be connected.
Both parameters must be of the same type unless the source parameter is
a struct type, the destination parameter is an interface type, and the
struct type implements the interface type. In such a case, a copy of the
parameter tree under the source parameter will be duplicated, linked to
the orignal tree, and placed under the destination parameter.
If an array parameter is connected to a resizable array parameter the
destination parameter array will automatically be resized to match the
source array.
The source parameter may not be a program parameter. Also the variability
of the parameters may not be CG_VARYING.
Examples
CGparameter TimeParam1 = cgGetNamedParameter(program1, "time");
CGparameter TimeParam2 = cgGetNamedParameter(program2, "time");
CGparameter SharedTime = cgCreateParameter(context,
cgGetParameterType(TimeParam1));
cgConnectParameter(SharedTime, TimeParam1);
cgConnectParameter(SharedTime, TimeParam2);
cgSetParameter1f(SharedTime, 2.0);
Errors
CG_INVALID_PARAM_HANDLE_ERROR is generated if either of the
from or to parameters are invalid handles.
CG_PARAMETER_IS_NOT_SHARED_ERROR is generated if the source parameter
is a program parameter.
CG_BIND_CREATES_CYCLE_ERROR is generated if the connection will result in
a cycle.
CG_PARAMETERS_DO_NOT_MATCH_ERROR is generated if the parameters do not have
the same type or the topologies do not match.
CG_ARRAY_TYPES_DO_NOT_MATCH_ERROR is generated if the type of two arrays
being connected do not match.
CG_ARRAY_DIMENSIONS_DO_NOT_MATCH_ERROR is generated if the dimensions of
two arrays being connected do not match.
History
cgConnectParameter was introduced in Cg 1.2.
See Also
cgGetConnectedParameter,
cgGetConnectedToParameter,
cgDisconnectParameter
|