|
| CRhinoStereoDisplayConduit (bool bRequiresHardwareShutterGlasses=false) |
|
virtual | ~CRhinoStereoDisplayConduit () |
|
void | Disable () |
|
void | Enable () |
|
virtual void | FinalizeFrame (CRhinoDisplayPipeline &pipeline) |
|
virtual bool | ProcessLeftEye (CRhinoDisplayPipeline &pipeline, StereoDisplayChannel nChannel)=0 |
| Intefrace. More...
|
|
virtual bool | ProcessRightEye (CRhinoDisplayPipeline &pipeline, StereoDisplayChannel nChannel)=0 |
|
bool | UsesHardwareShutterGlasses () const |
| Attributes. More...
|
|
| CRhinoDisplayConduit (CSupportChannels channel_mask) |
|
| CRhinoDisplayConduit (CSupportChannels channel_mask, bool enable) |
|
virtual | ~CRhinoDisplayConduit () |
|
bool | Bind (const CRhinoDisplayPipeline &pipeline) |
| Binding methods... More...
|
|
bool | Bind (const CRhinoView &view) |
| See: bool CRhinoDisplayConduit::Bind(const CRhinoDisplayPipeline& pipeline);. More...
|
|
bool | Bind (const CRhinoViewport &viewport) |
| See: bool CRhinoDisplayConduit::Bind(const CRhinoDisplayPipeline& pipeline);. More...
|
|
bool | Bind (const ON_Viewport &viewport) |
| See: bool CRhinoDisplayConduit::Bind(const CRhinoDisplayPipeline& pipeline);. More...
|
|
int | BindingCount () const |
|
bool | BindingsExist () const |
|
bool | ChannelSupported (UINT channel) const |
| Attributes... More...
|
|
bool | ConstantBinding () const |
|
void | Disable () |
|
class CRhinoDoc * | Document () const |
|
unsigned int | DocumentSerialNumber () const |
|
void | Enable () |
|
void | Enable (unsigned int docSerialNumber) |
|
void | EnableConstantBinding (bool enable=true) |
|
unsigned int | GetGeometryFilter () const |
|
ON_UuidList | GetObjectFilter () const |
|
void | GetSelectedFilter (bool &on, bool &checkSubObjects) const |
|
bool | InterestedInObject (const CRhinoObject *) const |
|
bool | IsBound (const CRhinoDisplayPipeline &pipeline, bool ignore_state=false) const |
|
bool | IsBound (const CRhinoView &view, bool ignore_state=false) const |
| See: CRhinoDisplayConduit::IsBound( const CRhinoDisplayPipeline& pipeline, bool ignore_state = false) const;. More...
|
|
bool | IsBound (const CRhinoViewport &viewport, bool ignore_state=false) const |
| See: CRhinoDisplayConduit::IsBound( const CRhinoDisplayPipeline& pipeline, bool ignore_state = false) const;. More...
|
|
bool | IsBound (const ON_Viewport &viewport, bool ignore_state=false) const |
| See: CRhinoDisplayConduit::IsBound( const CRhinoDisplayPipeline& pipeline, bool ignore_state = false) const;. More...
|
|
bool | IsEnabled () const |
|
bool | IsEnabled (unsigned int docSerialNumber) const |
|
virtual void | NotifyConduit (EConduitNotifiers notification_event, CRhinoDisplayPipeline &pipeline) |
| Notifications... More...
|
|
class CRhinoPageView * | PageView () const |
|
unsigned int | PageViewSerialNumber () const |
|
bool | ReplaceBinding (const CRhinoDisplayPipeline &old_pipeline, const CRhinoDisplayPipeline &new_pipeline) |
|
bool | ReplaceBinding (const CRhinoView &old_view, const CRhinoView &new_view) |
| See: bool CRhinoDisplayConduit::ReplaceBinding(const CRhinoDisplayPipeline& old_pipeline, const CRhinoDisplayPipeline& new_pipeline);. More...
|
|
bool | ReplaceBinding (const CRhinoViewport &old_viewport, const CRhinoViewport &new_viewport) |
| See: bool CRhinoDisplayConduit::ReplaceBinding(const CRhinoDisplayPipeline& old_pipeline, const CRhinoDisplayPipeline& new_pipeline);. More...
|
|
bool | ReplaceBinding (const ON_Viewport &old_viewport, const ON_Viewport &new_viewport) |
| See: bool CRhinoDisplayConduit::ReplaceBinding(const CRhinoDisplayPipeline& old_pipeline, const CRhinoDisplayPipeline& new_pipeline);. More...
|
|
void | SetGeometryFilter (unsigned int geometry_filter) |
|
void | SetObjectFilter (const ON_SimpleArray< ON_UUID > &objectIds) |
|
void | SetObjectFilter (ON_UUID objectId) |
|
void | SetSelectedFilter (bool on, bool checkSubObjects) |
|
bool | ToggleBinding (const CRhinoDisplayPipeline &pipeline) |
|
bool | ToggleBinding (const CRhinoView &view) |
| See: bool CRhinoDisplayConduit::ToggleBinding(const CRhinoDisplayPipeline& pipeline);. More...
|
|
bool | ToggleBinding (const CRhinoViewport &viewport) |
| See: bool CRhinoDisplayConduit::ToggleBinding(const CRhinoDisplayPipeline& pipeline);. More...
|
|
bool | ToggleBinding (const ON_Viewport &viewport) |
| See: bool CRhinoDisplayConduit::ToggleBinding(const CRhinoDisplayPipeline& pipeline);. More...
|
|
bool | Unbind (const CRhinoDisplayPipeline &pipeline) |
|
bool | Unbind (const CRhinoView &view) |
| See: bool CRhinoDisplayConduit::Unbind(const CRhinoDisplayPipeline& pipeline);. More...
|
|
bool | Unbind (const CRhinoViewport &viewport) |
| See: bool CRhinoDisplayConduit::Unbind(const CRhinoDisplayPipeline& pipeline);. More...
|
|
bool | Unbind (const ON_Viewport &viewport) |
| See: bool CRhinoDisplayConduit::Unbind(const CRhinoDisplayPipeline& pipeline);. More...
|
|
void | UnbindAll () |
|
class CRhinoView * | View () const |
|
class CRhinoViewport * | Viewport () const |
|
unsigned int | ViewportSerialNumber () const |
|
unsigned int | ViewSerialNumber () const |
|
Specialized abstract conduit class that provides very high level support for setting up and managing 3D Stereo viewports.
There are basically two types of stereo modes supported in Rhino: 1) Hardware shutter glasses 2) Some kind of software generated stereo view, (i.e. Anaglyph red/blue glasses)
You cannot support both types in one conduit. When you construct your stereo conduit you must specify what type you plan on supporting and all the appropriate setup and framework initialization will be done for you automatically.
Each "stereo phase" is broken into 3 primary parts (or channels): 1) Frame buffer initialization 2) Frustum setup and initialization 3) Frame buffer drawing
...each of those phases is called for each eye and are handled in the abstract routines:
ProcessLeftEye(...)
ProcessRightEye(...)
For obvious reasons, you should process all left eye calculations and left eye drawing inside "ProcessLeftEye", and all right eye calculations
and right eye drawing inside "ProcessRightEye". Doing any other kind of calculations inside either of these routines will have unknown behavior.
Each processing routine is passed an identifying channel ID so that you can determine where you are in the pipeline and what needs to be done.
For example: The following overridden routine is used to process left eye stereo frames...(you will need to do similar things inside ProcessRightEye as well)
bool CSomeStereoViewConduit::ProcessLeftEye(CRhinoDisplayPipeline& dp, StereoDisplayChannel nChannel) { bool bProcessed = false;
switch ( nChannel ) { case SDC_INIT_FRAME: { ///< clear the left eye frame buffer... bProcessed = true; break; }
case SDC_SETUP_FRUSTUM: { ///< Setup left eye frustum... bProcessed = true; break; }
case SDC_DRAW_FRAME: { ///< Draw left eye frame... bProcessed = true; break; } } return bProcessed; }
Note: If you process a given channel then you should return true from your routines, if you don't process a given channel, then returning false will cause Rhino to process that channel using its default mechanism.
For example: If you don't plan on doing anything for frame buffer initialization, then returning false will cause Rhino to clear the frame buffer using the standard default mechanism (which is based on whatever the current display mode is using).