Description
Use this callback to implement your display callback or display pass.
Display callbacks and display passes share the OpenGL state machine with XSI. If you need to change the OpenGL state, you should restore the original state when you are finished.
Applies To
Syntax
// C++
void <xgs_plugin-item_name>_Execute(
CRef in_context,
LPVOID *in_pUserData
) {
...
}
<xgs_plugin-item_name> is the name specified in the call to RegisterDisplayCallback or RegisterDisplayPass (see PluginRegistrar ), with any spaces removed.
Parameters
|
Parameter |
Type |
Description |
|
in_context |
A reference to a GraphicSequencerContext object. |
|
|
in_pUserData |
LPVOID |
Pointer to user data |
Examples
CStatus XSILoadPlugin( PluginRegistrar& in_reg )
{
// Set installation options
in_reg.PutVersion( 1, 0 );
// ... (see PluginRegistrar for details)
// Register your display callback
CStatus in_reg.RegisterDisplayCallback( L"MyDisplayCBName" );
// Register your display pass
CStatus in_reg.RegisterDisplayPass( L"MyDisplayPassName" );
}
/* ----------------------------
Display Callback
*/
CStatus MyDisplayCBName_Init( CRef in_context, LPVOID *in_pData )
{
GraphicSequencerContext ctx = in_context;
CGraphicSequencer in_pSequencer = ctx.GetGraphicSequencer();
// Use the sequencer to register the callback
in_pSequencer.RegisterDisplayCallback ( L"MyDisplayCBName", 0,
siPostBeginFrame, siAll, NULL );
// ...
}
CStatus MyDisplayCBName_Execute( CRef in_context, LPVOID *in_pData )
{
GraphicSequencerContext ctx = in_context;
CGraphicSequencer in_pSequencer = ctx.GetGraphicSequencer();
// ...
}
CStatus MyDisplayCBName_Term( CRef in_context, LPVOID *in_pData )
{
GraphicSequencerContext ctx = in_context;
CGraphicSequencer in_pSequencer = ctx.GetGraphicSequencer();
// ...
// Housekeeping
*in_pData = NULL;
}
/* ----------------------------
Display Pass
*/
CStatus MyDisplayPassName_Init( CRef in_context, LPVOID *in_pData )
{
GraphicSequencerContext ctx = in_context;
CGraphicSequencer in_pSequencer = ctx.GetGraphicSequencer();
// Use the sequencer to register the pass
in_pSequencer.RegisterPassCallback ( L"MyDisplayPassName", 0, siAll, NULL );
// ...
}
CStatus MyDisplayPassName_Execute( CRef in_context, LPVOID *in_pData )
{
GraphicSequencerContext ctx = in_context;
CGraphicSequencer in_pSequencer = ctx.GetGraphicSequencer();
// ...
}
CStatus MyDisplayPassName_Term( CRef in_context, LPVOID *in_pData )
{
GraphicSequencerContext ctx = in_context;
CGraphicSequencer in_pSequencer = ctx.GetGraphicSequencer();
// ...
// Housekeeping
*in_pData = NULL;
}
See Also
SOFTIMAGE|XSI v6.01