osg::FBOViewport Class Reference

FBOViewport class. See PageExtentionFBOViewport for a description. More...

#include <OSGFBOViewport.h>

Inheritance diagram for osg::FBOViewport:

osg::FBOViewportBase osg::Viewport osg::ViewportBase osg::AttachmentContainer osg::FieldContainer

List of all members.

Callbacks



enum  { FBO_RP_NONE = 0, FBO_RP_EFFECTS = 1 }
typedef void(* renderparamscbfp )(UInt32 params)
static void setRenderParamsCB (renderparamscbfp fp)

Public Types

enum  RenderBufferAttachmentType {
  NONE = 0, FBO_DEPTH_16 = 1, FBO_DEPTH_24 = 2, FBO_DEPTH_32 = 4,
  FBO_STENCIL_1 = 8, FBO_STENCIL_4 = 16, FBO_STENCIL_8 = 32, FBO_STENCIL_16 = 64
}
enum  {
  EnabledFieldId = Inherited::NextFieldId, ExcludeNodesFieldId = EnabledFieldId + 1, RenderNodesFieldId = ExcludeNodesFieldId + 1, TexturesFieldId = RenderNodesFieldId + 1,
  FboOnFieldId = TexturesFieldId + 1, StorageWidthFieldId = FboOnFieldId + 1, StorageHeightFieldId = StorageWidthFieldId + 1, GenCubemapsFieldId = StorageHeightFieldId + 1,
  GenDepthmapsFieldId = GenCubemapsFieldId + 1, FrameBufferIndexFieldId = GenDepthmapsFieldId + 1, DepthBufferIndexFieldId = FrameBufferIndexFieldId + 1, StencilBufferIndexFieldId = DepthBufferIndexFieldId + 1,
  DirtyFieldId = StencilBufferIndexFieldId + 1, ReadBufferFieldId = DirtyFieldId + 1, NextFieldId = ReadBufferFieldId + 1
}
typedef FBOViewportPtr Ptr
enum  {
  LeftFieldId = Inherited::NextFieldId, RightFieldId = LeftFieldId + 1, BottomFieldId = RightFieldId + 1, TopFieldId = BottomFieldId + 1,
  ParentFieldId = TopFieldId + 1, CameraFieldId = ParentFieldId + 1, RootFieldId = CameraFieldId + 1, BackgroundFieldId = RootFieldId + 1,
  ForegroundsFieldId = BackgroundFieldId + 1, TravMaskFieldId = ForegroundsFieldId + 1, DrawTimeFieldId = TravMaskFieldId + 1, NextFieldId = DrawTimeFieldId + 1
}
enum  { AttachmentsFieldId = Inherited::NextFieldId, NextFieldId = AttachmentsFieldId + 1 }
enum  { NextFieldId = 1 }

Public Member Functions

Render


virtual void render (RenderActionBase *action)
Access


bool initialize (Window *win, Int32 format=NONE)
void setTarget (Window *win, UInt32 id, GLenum attachment, GLenum target)
void bind (Window *win)
void stop (Window *win)
bool checkFrameBufferStatus (Window *win)
 Checks if FBO status is ok.
Int32 getMaxBuffers (void)
Sync


virtual void changed (BitVector whichField, UInt32 origin)
Output


virtual void dump (UInt32 uiIndent=0, const BitVector bvFlags=0) const
FieldContainer Get


virtual FieldContainerTypegetType (void)
virtual const FieldContainerTypegetType (void) const
virtual UInt32 getContainerSize (void) const
Field Get


SFBoolgetSFEnabled (void)
 Get the FBOViewport::_sfEnabled field.
MFNodePtrgetMFExcludeNodes (void)
 Get the FBOViewport::_mfExcludeNodes field.
MFNodePtrgetMFRenderNodes (void)
 Get the FBOViewport::_mfRenderNodes field.
MFTextureChunkPtrgetMFTextures (void)
 Get the FBOViewport::_mfTextures field.
SFBoolgetSFFboOn (void)
 Get the FBOViewport::_sfFboOn field.
SFInt32getSFStorageWidth (void)
 Get the FBOViewport::_sfStorageWidth field.
SFInt32getSFStorageHeight (void)
 Get the FBOViewport::_sfStorageHeight field.
SFBoolgetSFGenCubemaps (void)
 Get the FBOViewport::_sfGenCubemaps field.
SFBoolgetSFGenDepthmaps (void)
 Get the FBOViewport::_sfGenDepthmaps field.
SFBoolgetSFDirty (void)
 Get the FBOViewport::_sfDirty field.
SFBoolgetSFReadBuffer (void)
 Get the FBOViewport::_sfReadBuffer field.
bool & getEnabled (void)
 Get the value of the FBOViewport::_sfEnabled field.
const bool & getEnabled (void) const
 Get the value of the FBOViewport::_sfEnabled field.
bool & getFboOn (void)
 Get the value of the FBOViewport::_sfFboOn field.
const bool & getFboOn (void) const
 Get the value of the FBOViewport::_sfFboOn field.
Int32getStorageWidth (void)
 Get the value of the FBOViewport::_sfStorageWidth field.
const Int32getStorageWidth (void) const
 Get the value of the FBOViewport::_sfStorageWidth field.
Int32getStorageHeight (void)
 Get the value of the FBOViewport::_sfStorageHeight field.
const Int32getStorageHeight (void) const
 Get the value of the FBOViewport::_sfStorageHeight field.
bool & getGenCubemaps (void)
 Get the value of the FBOViewport::_sfGenCubemaps field.
const bool & getGenCubemaps (void) const
 Get the value of the FBOViewport::_sfGenCubemaps field.
bool & getGenDepthmaps (void)
 Get the value of the FBOViewport::_sfGenDepthmaps field.
const bool & getGenDepthmaps (void) const
 Get the value of the FBOViewport::_sfGenDepthmaps field.
bool & getDirty (void)
 Get the value of the FBOViewport::_sfDirty field.
const bool & getDirty (void) const
 Get the value of the FBOViewport::_sfDirty field.
bool & getReadBuffer (void)
 Get the value of the FBOViewport::_sfReadBuffer field.
const bool & getReadBuffer (void) const
 Get the value of the FBOViewport::_sfReadBuffer field.
NodePtrgetExcludeNodes (const UInt32 index)
 Get the value of the index element the FBOViewport::_mfExcludeNodes field.
MFNodePtrgetExcludeNodes (void)
 Get the FBOViewport::_mfExcludeNodes field.
const MFNodePtrgetExcludeNodes (void) const
 Get the FBOViewport::_mfExcludeNodes field.
NodePtrgetRenderNodes (const UInt32 index)
 Get the value of the index element the FBOViewport::_mfRenderNodes field.
MFNodePtrgetRenderNodes (void)
 Get the FBOViewport::_mfRenderNodes field.
const MFNodePtrgetRenderNodes (void) const
 Get the FBOViewport::_mfRenderNodes field.
TextureChunkPtrgetTextures (const UInt32 index)
 Get the value of the index element the FBOViewport::_mfTextures field.
MFTextureChunkPtrgetTextures (void)
 Get the FBOViewport::_mfTextures field.
const MFTextureChunkPtrgetTextures (void) const
 Get the FBOViewport::_mfTextures field.
Field Set


void setEnabled (const bool &value)
 Set the value of the FBOViewport::_sfEnabled field.
void setFboOn (const bool &value)
 Set the value of the FBOViewport::_sfFboOn field.
void setStorageWidth (const Int32 &value)
 Set the value of the FBOViewport::_sfStorageWidth field.
void setStorageHeight (const Int32 &value)
 Set the value of the FBOViewport::_sfStorageHeight field.
void setGenCubemaps (const bool &value)
 Set the value of the FBOViewport::_sfGenCubemaps field.
void setGenDepthmaps (const bool &value)
 Set the value of the FBOViewport::_sfGenDepthmaps field.
void setDirty (const bool &value)
 Set the value of the FBOViewport::_sfDirty field.
void setReadBuffer (const bool &value)
 Set the value of the FBOViewport::_sfReadBuffer field.
Binary Access
virtual UInt32 getBinSize (const BitVector &whichField)
virtual void copyToBin (BinaryDataHandler &pMem, const BitVector &whichField)
virtual void copyFromBin (BinaryDataHandler &pMem, const BitVector &whichField)
Copy


virtual FieldContainerPtr shallowCopy (void) const
access


void setSize (Real32 left, Real32 bottom, Real32 right, Real32 top)
Int32 getPixelLeft (void) const
Int32 getPixelRight (void) const
Int32 getPixelBottom (void) const
Int32 getPixelTop (void) const
Int32 getPixelWidth (void) const
Int32 getPixelHeight (void) const
bool isFullWindow (void) const
access


void clearForegrounds (void)
void addForeground (ForegroundPtr pForeground)
your_category


virtual void activateSize (void)
virtual void activate (void)
virtual void deactivate (void)
virtual void draw (DrawAction *action)
Field Get


SFReal32getSFLeft (void)
 Get the Viewport::_sfLeft field.
SFReal32getSFRight (void)
 Get the Viewport::_sfRight field.
SFReal32getSFBottom (void)
 Get the Viewport::_sfBottom field.
SFReal32getSFTop (void)
 Get the Viewport::_sfTop field.
SFWindowPtrgetSFParent (void)
 Get the Viewport::_sfParent field.
SFCameraPtrgetSFCamera (void)
 Get the Viewport::_sfCamera field.
SFNodePtrgetSFRoot (void)
 Get the Viewport::_sfRoot field.
SFBackgroundPtrgetSFBackground (void)
 Get the Viewport::_sfBackground field.
MFForegroundPtrgetMFForegrounds (void)
 Get the Viewport::_mfForegrounds field.
SFUInt32getSFTravMask (void)
 Get the Viewport::_sfTravMask field.
SFReal32getSFDrawTime (void)
 Get the Viewport::_sfDrawTime field.
Real32getLeft (void)
 Get the value of the Viewport::_sfLeft field.
const Real32getLeft (void) const
 Get the value of the Viewport::_sfLeft field.
Real32getRight (void)
 Get the value of the Viewport::_sfRight field.
const Real32getRight (void) const
 Get the value of the Viewport::_sfRight field.
Real32getBottom (void)
 Get the value of the Viewport::_sfBottom field.
const Real32getBottom (void) const
 Get the value of the Viewport::_sfBottom field.
Real32getTop (void)
 Get the value of the Viewport::_sfTop field.
const Real32getTop (void) const
 Get the value of the Viewport::_sfTop field.
WindowPtrgetParent (void)
 Get the value of the Viewport::_sfParent field.
const WindowPtrgetParent (void) const
 Get the value of the Viewport::_sfParent field.
CameraPtrgetCamera (void)
 Get the value of the Viewport::_sfCamera field.
const CameraPtrgetCamera (void) const
 Get the value of the Viewport::_sfCamera field.
NodePtrgetRoot (void)
 Get the value of the Viewport::_sfRoot field.
const NodePtrgetRoot (void) const
 Get the value of the Viewport::_sfRoot field.
BackgroundPtrgetBackground (void)
 Get the value of the Viewport::_sfBackground field.
const BackgroundPtrgetBackground (void) const
 Get the value of the Viewport::_sfBackground field.
UInt32getTravMask (void)
 Get the value of the Viewport::_sfTravMask field.
const UInt32getTravMask (void) const
 Get the value of the Viewport::_sfTravMask field.
Real32getDrawTime (void)
 Get the value of the Viewport::_sfDrawTime field.
const Real32getDrawTime (void) const
 Get the value of the Viewport::_sfDrawTime field.
ForegroundPtrgetForegrounds (const UInt32 index)
 Get the value of the index element the Viewport::_mfForegrounds field.
MFForegroundPtrgetForegrounds (void)
 Get the Viewport::_mfForegrounds field.
const MFForegroundPtrgetForegrounds (void) const
 Get the Viewport::_mfForegrounds field.
Field Set


void setLeft (const Real32 &value)
 Set the value of the Viewport::_sfLeft field.
void setRight (const Real32 &value)
 Set the value of the Viewport::_sfRight field.
void setBottom (const Real32 &value)
 Set the value of the Viewport::_sfBottom field.
void setTop (const Real32 &value)
 Set the value of the Viewport::_sfTop field.
void setParent (const WindowPtr &value)
 Set the value of the Viewport::_sfParent field.
void setCamera (const CameraPtr &value)
 Set the value of the Viewport::_sfCamera field.
void setRoot (const NodePtr &value)
 Set the value of the Viewport::_sfRoot field.
void setBackground (const BackgroundPtr &value)
 Set the value of the Viewport::_sfBackground field.
void setTravMask (const UInt32 &value)
 Set the value of the Viewport::_sfTravMask field.
void setDrawTime (const Real32 &value)
 Set the value of the Viewport::_sfDrawTime field.
Handle Attachments


void addAttachment (const AttachmentPtr &fieldContainerP, UInt16 binding=0)
void subAttachment (const AttachmentPtr &fieldContainerP, UInt16 binding=0)
AttachmentPtr findAttachment (UInt32 groupId, UInt16 binding=0)
AttachmentPtr findAttachment (const FieldContainerType &type, UInt16 binding=0)


SFAttachmentMapgetSFAttachments (void)
Get Instance Type Information


UInt32 getTypeId (void) const
UInt16 getGroupId (void) const
const Char8getTypeName (void) const


FieldgetField (UInt32 fieldId)
FieldgetField (const Char8 *fieldName)

Static Public Member Functions

Class Get


static const char * getClassname (void)
Class Get


static FieldContainerTypegetClassType (void)
 access the type of the class
static UInt32 getClassTypeId (void)
 access the numerical type of the class
Construction


static FBOViewportPtr create (void)
 create a new instance of the class
static FBOViewportPtr createEmpty (void)
 create an empty new instance of the class, do not copy the prototype
Get Class Type Information


static UInt16 getClassGroupId (void)

Static Public Attributes

static const osg::BitVector EnabledFieldMask
static const osg::BitVector ExcludeNodesFieldMask
static const osg::BitVector RenderNodesFieldMask
static const osg::BitVector TexturesFieldMask
static const osg::BitVector FboOnFieldMask
static const osg::BitVector StorageWidthFieldMask
static const osg::BitVector StorageHeightFieldMask
static const osg::BitVector GenCubemapsFieldMask
static const osg::BitVector GenDepthmapsFieldMask
static const osg::BitVector FrameBufferIndexFieldMask
static const osg::BitVector DepthBufferIndexFieldMask
static const osg::BitVector StencilBufferIndexFieldMask
static const osg::BitVector DirtyFieldMask
static const osg::BitVector ReadBufferFieldMask
static const osg::BitVector MTInfluenceMask
static const osg::BitVector LeftFieldMask
static const osg::BitVector RightFieldMask
static const osg::BitVector BottomFieldMask
static const osg::BitVector TopFieldMask
static const osg::BitVector ParentFieldMask
static const osg::BitVector CameraFieldMask
static const osg::BitVector RootFieldMask
static const osg::BitVector BackgroundFieldMask
static const osg::BitVector ForegroundsFieldMask
static const osg::BitVector TravMaskFieldMask
static const osg::BitVector DrawTimeFieldMask
static const BitVector AttachmentsFieldMask
static const BitVector NextFieldMask
CoredNodePtr helper


static const bool isNodeCore = false

Protected Member Functions

bool extensionCheck (void)
 Checks if the needed OpenGL-Extensions are supported.
Constructors


 FBOViewport (void)
 FBOViewport (const FBOViewport &source)
Destructors


virtual ~FBOViewport (void)
void onCreate (const FBOViewport *source=NULL)
void onDestroy (void)
Field Get


SFUInt32getSFFrameBufferIndex (void)
 Get the FBOViewport::_sfFrameBufferIndex field.
SFUInt32getSFDepthBufferIndex (void)
 Get the FBOViewport::_sfDepthBufferIndex field.
SFUInt32getSFStencilBufferIndex (void)
 Get the FBOViewport::_sfStencilBufferIndex field.
UInt32getFrameBufferIndex (void)
 Get the value of the FBOViewport::_sfFrameBufferIndex field.
const UInt32getFrameBufferIndex (void) const
 Get the value of the FBOViewport::_sfFrameBufferIndex field.
UInt32getDepthBufferIndex (void)
 Get the value of the FBOViewport::_sfDepthBufferIndex field.
const UInt32getDepthBufferIndex (void) const
 Get the value of the FBOViewport::_sfDepthBufferIndex field.
UInt32getStencilBufferIndex (void)
 Get the value of the FBOViewport::_sfStencilBufferIndex field.
const UInt32getStencilBufferIndex (void) const
 Get the value of the FBOViewport::_sfStencilBufferIndex field.
Field Set


void setFrameBufferIndex (const UInt32 &value)
 Set the value of the FBOViewport::_sfFrameBufferIndex field.
void setDepthBufferIndex (const UInt32 &value)
 Set the value of the FBOViewport::_sfDepthBufferIndex field.
void setStencilBufferIndex (const UInt32 &value)
 Set the value of the FBOViewport::_sfStencilBufferIndex field.
Sync


void executeSyncImpl (FBOViewportBase *pOther, const BitVector &whichField)
virtual void executeSync (FieldContainer &other, const BitVector &whichField)
Sync


void executeSyncImpl (ViewportBase *pOther, const BitVector &whichField)
Sync


void executeSyncImpl (AttachmentContainer *pOther, const BitVector &whichField)
Sync


void executeSyncImpl (FieldContainer *pOther, const BitVector &whichField)
Pointer


AttachmentContainerPtr getPtr (void)
MT Edit


template<class FieldTypeT>
void beginEditX (const BitVector &whichField, FieldTypeT &field)
template<class FieldTypeT>
void endEditX (const BitVector &whichField, FieldTypeT &field)
MT Construction


void onCreate (const FieldContainer *source=NULL)
void onCreateAspect (const FieldContainer *aspect0, const FieldContainer *source=NULL)

Static Protected Member Functions

Create Fieldcontainer


template<class ObjectPtrT>
static void newPtr (ObjectPtrT &result, const typename ObjectPtrT::StoredObjectType *prototypeP)
template<class ObjectPtrT>
static void newPtr (ObjectPtrT &result)

Protected Attributes

Fields


SFBool _sfEnabled
MFNodePtr _mfExcludeNodes
MFNodePtr _mfRenderNodes
MFTextureChunkPtr _mfTextures
SFBool _sfFboOn
SFInt32 _sfStorageWidth
SFInt32 _sfStorageHeight
SFBool _sfGenCubemaps
SFBool _sfGenDepthmaps
SFUInt32 _sfFrameBufferIndex
SFUInt32 _sfDepthBufferIndex
SFUInt32 _sfStencilBufferIndex
SFBool _sfDirty
SFBool _sfReadBuffer
Fields


SFReal32 _sfLeft
SFReal32 _sfRight
SFReal32 _sfBottom
SFReal32 _sfTop
SFWindowPtr _sfParent
SFCameraPtr _sfCamera
SFNodePtr _sfRoot
SFBackgroundPtr _sfBackground
MFForegroundPtr _mfForegrounds
SFUInt32 _sfTravMask
SFReal32 _sfDrawTime
Fields


SFAttachmentMap _attachmentMap
Member


UInt32 _shares

Private Types

typedef FBOViewportBase Inherited

Private Member Functions

void operator= (const FBOViewport &source)

Static Private Member Functions

static void initMethod (void)

Static Private Attributes

OpenGL Extension Handling


static UInt32 _framebuffer_object_extension
static UInt32 _draw_buffers_extension
static UInt32 _funcDrawBuffers = Window::invalidFunctionID
static UInt32 _funcBindFramebuffer = Window::invalidFunctionID
static UInt32 _funcBindRenderbuffer = Window::invalidFunctionID
static UInt32 _funcCheckFramebufferStatus = Window::invalidFunctionID
static UInt32 _funcDeleteFramebuffers = Window::invalidFunctionID
static UInt32 _funcDeleteRenderbuffers = Window::invalidFunctionID
static UInt32 _funcFramebufferRenderbuffer = Window::invalidFunctionID
static UInt32 _funcFramebufferTexture1D = Window::invalidFunctionID
static UInt32 _funcFramebufferTexture2D = Window::invalidFunctionID
static UInt32 _funcFramebufferTexture3D = Window::invalidFunctionID
static UInt32 _funcGenFramebuffers = Window::invalidFunctionID
static UInt32 _funcGenRenderbuffers = Window::invalidFunctionID
static UInt32 _funcGenerateMipmap = Window::invalidFunctionID
static UInt32 _funcGetFramebufferAttachmentParameteriv = Window::invalidFunctionID
static UInt32 _funcGetRenderbufferParameteriv = Window::invalidFunctionID
static UInt32 _funcIsFramebuffer = Window::invalidFunctionID
static UInt32 _funcIsRenderbuffer = Window::invalidFunctionID
static UInt32 _funcRenderbufferStorage = Window::invalidFunctionID
static renderparamscbfp _renderParamsFP = NULL

Friends

class FieldContainer
class FBOViewportBase


Detailed Description

First Release of FramebufferObjects-Viewport.

Definition at line 60 of file OSGFBOViewport.h.


Member Typedef Documentation

Reimplemented from osg::FBOViewportBase.

Definition at line 64 of file OSGFBOViewport.h.

Reimplemented from osg::ViewportBase.

Definition at line 103 of file OSGFBOViewportBase.h.


Member Enumeration Documentation

Enumerator:
NONE 
FBO_DEPTH_16 
FBO_DEPTH_24 
FBO_DEPTH_32 
FBO_STENCIL_1 
FBO_STENCIL_4 
FBO_STENCIL_8 
FBO_STENCIL_16 

Definition at line 69 of file OSGFBOViewport.h.

00070      {
00071         NONE            = 0,
00072         FBO_DEPTH_16    = 1,
00073         FBO_DEPTH_24    = 2,
00074         FBO_DEPTH_32    = 4,
00075         FBO_STENCIL_1   = 8,
00076         FBO_STENCIL_4   = 16,
00077         FBO_STENCIL_8   = 32,
00078         FBO_STENCIL_16  = 64
00079      };

anonymous enum

Enumerator:
FBO_RP_NONE 
FBO_RP_EFFECTS 

Definition at line 127 of file OSGFBOViewport.h.

00128     {
00129         FBO_RP_NONE = 0,
00130         FBO_RP_EFFECTS = 1
00131     };

anonymous enum [inherited]

Enumerator:
EnabledFieldId 
ExcludeNodesFieldId 
RenderNodesFieldId 
TexturesFieldId 
FboOnFieldId 
StorageWidthFieldId 
StorageHeightFieldId 
GenCubemapsFieldId 
GenDepthmapsFieldId 
FrameBufferIndexFieldId 
DepthBufferIndexFieldId 
StencilBufferIndexFieldId 
DirtyFieldId 
ReadBufferFieldId 
NextFieldId 

Definition at line 105 of file OSGFBOViewportBase.h.

00106     {
00107         EnabledFieldId            = Inherited::NextFieldId,
00108         ExcludeNodesFieldId       = EnabledFieldId            + 1,
00109         RenderNodesFieldId        = ExcludeNodesFieldId       + 1,
00110         TexturesFieldId           = RenderNodesFieldId        + 1,
00111         FboOnFieldId              = TexturesFieldId           + 1,
00112         StorageWidthFieldId       = FboOnFieldId              + 1,
00113         StorageHeightFieldId      = StorageWidthFieldId       + 1,
00114         GenCubemapsFieldId        = StorageHeightFieldId      + 1,
00115         GenDepthmapsFieldId       = GenCubemapsFieldId        + 1,
00116         FrameBufferIndexFieldId   = GenDepthmapsFieldId       + 1,
00117         DepthBufferIndexFieldId   = FrameBufferIndexFieldId   + 1,
00118         StencilBufferIndexFieldId = DepthBufferIndexFieldId   + 1,
00119         DirtyFieldId              = StencilBufferIndexFieldId + 1,
00120         ReadBufferFieldId         = DirtyFieldId              + 1,
00121         NextFieldId               = ReadBufferFieldId         + 1
00122     };

anonymous enum [inherited]

Enumerator:
LeftFieldId 
RightFieldId 
BottomFieldId 
TopFieldId 
ParentFieldId 
CameraFieldId 
RootFieldId 
BackgroundFieldId 
ForegroundsFieldId 
TravMaskFieldId 
DrawTimeFieldId 
NextFieldId 

Definition at line 102 of file OSGViewportBase.h.

00103     {
00104         LeftFieldId        = Inherited::NextFieldId,
00105         RightFieldId       = LeftFieldId        + 1,
00106         BottomFieldId      = RightFieldId       + 1,
00107         TopFieldId         = BottomFieldId      + 1,
00108         ParentFieldId      = TopFieldId         + 1,
00109         CameraFieldId      = ParentFieldId      + 1,
00110         RootFieldId        = CameraFieldId      + 1,
00111         BackgroundFieldId  = RootFieldId        + 1,
00112         ForegroundsFieldId = BackgroundFieldId  + 1,
00113         TravMaskFieldId    = ForegroundsFieldId + 1,
00114         DrawTimeFieldId    = TravMaskFieldId    + 1,
00115         NextFieldId        = DrawTimeFieldId    + 1
00116     };

anonymous enum [inherited]

Enumerator:
AttachmentsFieldId 
NextFieldId 

Definition at line 78 of file OSGAttachmentContainerImpl.h.

anonymous enum [inherited]

Enumerator:
NextFieldId 

Definition at line 73 of file OSGFieldContainerImpl.h.

00073 { NextFieldId = 1 };


Constructor & Destructor Documentation

FBOViewport::FBOViewport ( void   )  [protected]

Definition at line 264 of file OSGFBOViewport.cpp.

00264                              :
00265     Inherited()
00266 {
00267 }

FBOViewport::FBOViewport ( const FBOViewport source  )  [protected]

Definition at line 269 of file OSGFBOViewport.cpp.

References _draw_buffers_extension, _framebuffer_object_extension, _funcBindFramebuffer, _funcBindRenderbuffer, _funcCheckFramebufferStatus, _funcDeleteFramebuffers, _funcDeleteRenderbuffers, _funcDrawBuffers, _funcFramebufferRenderbuffer, _funcFramebufferTexture1D, _funcFramebufferTexture2D, _funcFramebufferTexture3D, _funcGenerateMipmap, _funcGenFramebuffers, _funcGenRenderbuffers, _funcGetFramebufferAttachmentParameteriv, _funcGetRenderbufferParameteriv, _funcIsFramebuffer, _funcIsRenderbuffer, _funcRenderbufferStorage, GL_ARB_draw_buffers, OSG_DLSYM_UNDERSCORE, osg::Window::registerExtension(), and osg::Window::registerFunction().

00269                                                   :
00270     Inherited(source)
00271 {
00272     _framebuffer_object_extension = Window::registerExtension("GL_EXT_framebuffer_object");
00273 
00274     _draw_buffers_extension = Window::registerExtension("GL_ARB_draw_buffers");
00275 
00276     _funcDrawBuffers =
00277         Window::registerFunction (OSG_DLSYM_UNDERSCORE"glDrawBuffers", 
00278                                   GL_ARB_draw_buffers);
00279 
00280     _funcBindFramebuffer =
00281         Window::registerFunction (OSG_DLSYM_UNDERSCORE"glBindFramebufferEXT", 
00282                                   _framebuffer_object_extension);
00283     _funcBindRenderbuffer =
00284         Window::registerFunction (OSG_DLSYM_UNDERSCORE"glBindRenderbufferEXT", 
00285                                   _framebuffer_object_extension);
00286     _funcCheckFramebufferStatus =
00287         Window::registerFunction (OSG_DLSYM_UNDERSCORE"glCheckFramebufferStatusEXT", 
00288                                   _framebuffer_object_extension);
00289     _funcDeleteFramebuffers =
00290         Window::registerFunction (OSG_DLSYM_UNDERSCORE"glDeleteFramebuffersEXT", 
00291                                   _framebuffer_object_extension);
00292     _funcDeleteRenderbuffers =
00293         Window::registerFunction (OSG_DLSYM_UNDERSCORE"glDeleteRenderbuffersEXT", 
00294                                   _framebuffer_object_extension);
00295     _funcFramebufferRenderbuffer =
00296         Window::registerFunction (OSG_DLSYM_UNDERSCORE"glFramebufferRenderbufferEXT", 
00297                                   _framebuffer_object_extension);
00298     _funcFramebufferTexture1D =
00299         Window::registerFunction (OSG_DLSYM_UNDERSCORE"glFramebufferTexture1DEXT", 
00300                                   _framebuffer_object_extension);
00301     _funcFramebufferTexture2D =
00302         Window::registerFunction (OSG_DLSYM_UNDERSCORE"glFramebufferTexture2DEXT", 
00303                                   _framebuffer_object_extension);
00304     _funcFramebufferTexture3D =
00305         Window::registerFunction (OSG_DLSYM_UNDERSCORE"glFramebufferTexture3DEXT", 
00306                                   _framebuffer_object_extension);
00307     _funcGenFramebuffers =
00308         Window::registerFunction (OSG_DLSYM_UNDERSCORE"glGenFramebuffersEXT", 
00309                                   _framebuffer_object_extension);
00310     _funcGenRenderbuffers =
00311         Window::registerFunction (OSG_DLSYM_UNDERSCORE"glGenRenderbuffersEXT", 
00312                                   _framebuffer_object_extension);
00313     _funcGenerateMipmap =
00314         Window::registerFunction (OSG_DLSYM_UNDERSCORE"glGenerateMipmapEXT", 
00315                                   _framebuffer_object_extension);
00316     _funcGetFramebufferAttachmentParameteriv =
00317         Window::registerFunction (OSG_DLSYM_UNDERSCORE"glGetFramebufferAttachmentParameterivEXT", 
00318                                   _framebuffer_object_extension);
00319     _funcGetRenderbufferParameteriv =
00320         Window::registerFunction (OSG_DLSYM_UNDERSCORE"glGetRenderbufferParameterivEXT", 
00321                                   _framebuffer_object_extension);
00322     _funcIsFramebuffer =
00323         Window::registerFunction (OSG_DLSYM_UNDERSCORE"glIsFramebufferEXT", 
00324                                   _framebuffer_object_extension);
00325     _funcIsRenderbuffer =
00326         Window::registerFunction (OSG_DLSYM_UNDERSCORE"glIsRenderbufferEXT", 
00327                                   _framebuffer_object_extension);
00328     _funcRenderbufferStorage =
00329         Window::registerFunction (OSG_DLSYM_UNDERSCORE"glRenderbufferStorageEXT", 
00330                                   _framebuffer_object_extension);
00331 }

FBOViewport::~FBOViewport ( void   )  [protected, virtual]

Definition at line 333 of file OSGFBOViewport.cpp.

00334 {
00335 }


Member Function Documentation

static const char* osg::FBOViewport::getClassname ( void   )  [inline, static]

Reimplemented from osg::Viewport.

Definition at line 85 of file OSGFBOViewport.h.

00085 { return "FBOViewport"; }

void FBOViewport::render ( RenderActionBase action  )  [virtual]

Reimplemented from osg::Viewport.

Definition at line 502 of file OSGFBOViewport.cpp.

References _funcDrawBuffers, _renderParamsFP, osg::Viewport::activate(), osg::Action::apply(), osg::beginEditCP(), bind(), osg::ViewportBase::BottomFieldMask, checkFrameBufferStatus(), checkGLError(), osg::MField< FieldTypeT, fieldNameSpace >::clear(), osg::MatrixCameraDecoratorBase::create(), osg::TileCameraDecoratorBase::create(), osg::AttachmentContainerPtr::dcast(), osg::Viewport::deactivate(), osg::MField< FieldTypeT, fieldNameSpace >::empty(), osg::endEditCP(), osg::endLog(), extensionCheck(), FBO_DEPTH_24, FBO_RP_EFFECTS, FBO_RP_NONE, FDEBUG, FWARNING, osg::ViewportBase::getBackground(), osg::ViewportBase::getCamera(), osg::AttachmentContainerPtr::getCPtr(), osg::getCPtr(), osg::FBOViewportBase::getEnabled(), osg::FBOViewportBase::getExcludeNodes(), osg::FBOViewportBase::getFboOn(), osg::ViewportBase::getForegrounds(), osg::Window::getFunction(), osg::FBOViewportBase::getGenCubemaps(), osg::FBOViewportBase::getGenDepthmaps(), osg::Window::getGLObjectId(), getMaxBuffers(), osg::ViewportBase::getParent(), osg::WindowBase::getPort(), osg::AttachmentContainer::getPtr(), osg::FBOViewportBase::getRenderNodes(), osg::ViewportBase::getRoot(), osg::MField< FieldTypeT, fieldNameSpace >::getSize(), osg::FBOViewportBase::getStorageHeight(), osg::FBOViewportBase::getStorageWidth(), osg::FBOViewportBase::getTextures(), osg::ViewportBase::getTravMask(), osg::DrawActionBase::getWindow(), osg::RenderAction::getZWriteTrans(), GL_COLOR_ATTACHMENT0_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_DEPTH_COMPONENT16_ARB, GL_DEPTH_COMPONENT32_ARB, GL_DEPTH_STENCIL_EXT, GL_STENCIL_ATTACHMENT_EXT, GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB, GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB, GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB, GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB, GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB, GLenum, osg::Window::hasExtension(), osg::TextureChunkBase::ImageFieldMask, initialize(), osg::ViewportBase::LeftFieldMask, osg::NullFC, osg::osgMin(), osg::MField< FieldTypeT, fieldNameSpace >::push_back(), osg::Window::resizeGL(), osg::ViewportBase::RightFieldMask, osg::DrawActionBase::setBackground(), osg::DrawActionBase::setCamera(), osg::Viewport::setSize(), osg::FBOViewportBase::setStorageHeight(), osg::FBOViewportBase::setStorageWidth(), setTarget(), osg::Action::setTravMask(), osg::DrawActionBase::setViewport(), osg::RenderAction::setZWriteTrans(), osg::MField< FieldTypeT, fieldNameSpace >::size(), stop(), osg::FBOViewportBase::StorageHeightFieldMask, osg::FBOViewportBase::StorageWidthFieldMask, osg::subRefCP(), SWARNING, osg::ViewportBase::TopFieldMask, and osg::Window::validateGLObject().

00503 {
00504     if (!getEnabled())
00505         return;
00506         
00507     Window *win = action->getWindow();
00508 
00509     // Let the window handle resizes, to avoid interfering with the
00510     // FBOViewports settings
00511     
00512     win->resizeGL();
00513     
00514     static GLenum targets[6] = {
00515                           GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB,
00516                           GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB,
00517                           GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB,
00518                           GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB,
00519                           GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB,
00520                           GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB,
00521                         };
00522 
00523     static Matrix transforms[6] = { 
00524                              Matrix( 1, 0, 0, 0,
00525                                      0,-1, 0, 0,
00526                                      0, 0,-1, 0,
00527                                      0, 0, 0, 1 ),
00528                                      
00529                              Matrix(-1, 0, 0, 0,
00530                                      0,-1, 0, 0,
00531                                      0, 0, 1, 0,
00532                                      0, 0, 0, 1 ),
00533                                      
00534                              Matrix( 1, 0, 0, 0,
00535                                      0, 0, 1, 0,
00536                                      0,-1, 0, 0,
00537                                      0, 0, 0, 1 ),
00538                                      
00539                              Matrix( 1, 0, 0, 0,
00540                                      0, 0,-1, 0,
00541                                      0, 1, 0, 0,
00542                                      0, 0, 0, 1 ),
00543                                      
00544                              Matrix( 0, 0,-1, 0,
00545                                      0,-1, 0, 0,
00546                                     -1, 0, 0, 0,
00547                                      0, 0, 0, 1 ),
00548                                      
00549                              Matrix( 0, 0, 1, 0,
00550                                      0,-1, 0, 0,
00551                                      1, 0, 0, 0,
00552                                      0, 0, 0, 1 ),
00553                            };
00554 
00555     if (win == NULL)
00556     {
00557         SWARNING << "FBOViewport::render: no window!" << std::endl;
00558         return;
00559     }
00560     if (getCamera() == NullFC)
00561     {
00562         SWARNING << "FBOViewport::render: no camera!" << std::endl;
00563         return;
00564     }
00565     if (getBackground() == NullFC)
00566     {
00567         SWARNING << "FBOViewport::render: no background!" << std::endl;
00568         return;
00569     }
00570     if (getRoot() == NullFC && getRenderNodes().empty())
00571     {
00572         SWARNING << "FBOViewport::render: no root(s)!" << std::endl;
00573         return;
00574     }
00575 
00576     GLint maxTexSize = 0;
00577     glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTexSize);
00578     
00579     beginEditCP(getPtr(), StorageWidthFieldMask | StorageHeightFieldMask);
00580         if (getStorageWidth() > maxTexSize)
00581             setStorageWidth( maxTexSize );
00582         if (getStorageHeight() > maxTexSize)
00583             setStorageHeight( maxTexSize );
00584     endEditCP(getPtr(), StorageWidthFieldMask | StorageHeightFieldMask);
00585 
00586     // set special render state
00587     if (_renderParamsFP != NULL)
00588         _renderParamsFP(FBO_RP_EFFECTS);
00589 
00590     bool depth = getGenDepthmaps();
00591     RenderAction *rAct = dynamic_cast<RenderAction*>(action);
00592     bool zWriteTransSave = rAct ? rAct->getZWriteTrans() : true;
00593 
00594     if (depth)
00595         rAct->setZWriteTrans(true);
00596             
00597     if (!getFboOn() || !extensionCheck())
00598     {
00599         UInt32 i, numBuffers = (getTextures().getSize()) ? 1 : 0;
00600         
00601         if ( !win->hasExtension("GL_ARB_texture_non_power_of_two") )
00602         {
00603             beginEditCP(getPtr(), StorageWidthFieldMask | StorageHeightFieldMask);
00604             
00605             i = 1;
00606             do {
00607                 i <<= 1;
00608             } while (getStorageHeight() >= i);
00609             setStorageHeight( i>>1 );
00610             
00611             i = 1;
00612             do {
00613                 i <<= 1;
00614             } while (getStorageWidth() >= i);
00615             setStorageWidth( i>>1 );
00616             
00617             endEditCP(getPtr(), StorageWidthFieldMask | StorageHeightFieldMask);
00618         }
00619 
00620         if (numBuffers > 0)
00621         {
00622             Int32 j, sides = getGenCubemaps() ? 6 : 1;
00623             
00624             // invalid mode, used as workaround until a better idea for setting/ rendering env
00625             if (getGenDepthmaps() && getGenCubemaps())
00626                 sides = 0;
00627 
00628             FDEBUG(( "Using standard GL (%d maxTexSize) with %d %sTextures and %d views...\n",
00629                      maxTexSize, numBuffers, (depth ? "depth" : ""), sides ));
00630         
00631             for (i=0; i<getExcludeNodes().getSize(); i++)
00632             {
00633                 NodePtr exnode = getExcludeNodes()[i];
00634                 if (exnode != NullFC)
00635                     exnode->setActive(false);
00636             }
00637             
00638             CameraPtr cP = getCamera();
00639             CameraDecoratorPtr cdP = CameraDecoratorPtr::dcast(cP);
00640 
00641             // ignore decorators!
00642             while (cdP != NullFC)
00643             {
00644                 cP = cdP->getDecoratee();
00645                 cdP = CameraDecoratorPtr::dcast(cP);
00646             }
00647         
00648             //action->setCamera(getCamera().getCPtr());
00649             action->setBackground(getBackground().getCPtr());
00650             action->setViewport(this);
00651             action->setTravMask(getTravMask());
00652             
00653             Int32 winWidth = getParent()->getWidth();
00654             Int32 winHeight = getParent()->getHeight();
00655             
00656             Int32 imgWidth = getStorageWidth();
00657             Int32 imgHeight = getStorageHeight();
00658             
00659             UInt32 x1, x2, y1, y2, tw, th;
00660             
00661             ShadowViewportPtr shadowVptPtr = NullFC;
00662             MFForegroundPtr fgndBag;
00663             MFForegroundPtr::iterator fgndIt;
00664             std::vector< Int32 > pos;
00665             Int32 n = 0;
00666             Real32 svpL, svpB, svpR, svpT;
00667             
00668             // there seems to be s.th. wrong with the svp init, only render if done
00669             static bool check = false;
00670             
00671             if (!sides)
00672             {
00673                 if (imgWidth <= 1 || imgHeight <= 1)
00674                 {
00675                     imgWidth = winWidth;
00676                     imgHeight = winHeight;
00677                     //SWARNING << "noDim: " << imgWidth << ", " << imgHeight << std::endl;
00678                 }
00679                 
00680                 // TODO; introduce special mode instead of searching for this type
00681                 for (j=0; j<win->getPort().size(); j++)
00682                 {
00683                     shadowVptPtr = ShadowViewportPtr::dcast(win->getPort(j));
00684                     
00685                     if (shadowVptPtr != NullFC)
00686                         break;
00687                 }
00688                 
00689                 if (shadowVptPtr != NullFC)
00690                 {
00691                     n = shadowVptPtr->getForegrounds().size();
00692                     
00693                     for (j=n-1; j>=0; j--) {
00694                         TextureGrabForegroundPtr grab = TextureGrabForegroundPtr::dcast(
00695                                                         shadowVptPtr->getForegrounds(j));
00696                         if (grab == NullFC) {
00697                             fgndBag.push_back(shadowVptPtr->getForegrounds(j));
00698                             fgndIt = shadowVptPtr->getForegrounds().begin() + j;
00699                             shadowVptPtr->getForegrounds().erase(fgndIt);
00700                         }
00701                         else {
00702                             grab->setActive(false);
00703                             pos.push_back(j);
00704                         }
00705                     }
00706                     
00707                     svpL = shadowVptPtr->getLeft();
00708                     svpB = shadowVptPtr->getBottom();
00709                     svpR = shadowVptPtr->getRight();
00710                     svpT = shadowVptPtr->getTop();
00711                     
00712                     beginEditCP(shadowVptPtr, LeftFieldMask | RightFieldMask |
00713                                               BottomFieldMask | TopFieldMask);
00714                         shadowVptPtr->setSize(0, 0, imgWidth-1, imgHeight-1);
00715                     endEditCP(shadowVptPtr, LeftFieldMask | RightFieldMask |
00716                                             BottomFieldMask | TopFieldMask); 
00717                     
00718                     beginEditCP(getPtr(), LeftFieldMask | RightFieldMask |
00719                                           BottomFieldMask | TopFieldMask);
00720                         setSize(0, 0, imgWidth-1, imgHeight-1);
00721                     endEditCP(getPtr(), LeftFieldMask | RightFieldMask |
00722                                         BottomFieldMask | TopFieldMask);
00723                     
00724                     ImagePtr i = getTextures(0)->getImage();
00725                     
00726                     if (i->getWidth() != imgWidth || i->getHeight() != imgHeight)
00727                     {
00728                         beginEditCP(getTextures(0), TextureChunk::ImageFieldMask);
00729                             i->set(i->getPixelFormat(), imgWidth, imgHeight);
00730                         endEditCP(getTextures(0), TextureChunk::ImageFieldMask);
00731                     }
00732                 }
00733             }
00734             
00735             TileCameraDecoratorPtr tiledeco = TileCameraDecorator::create();
00736             
00737             beginEditCP(tiledeco);
00738                 tiledeco->setFullSize(imgWidth, imgHeight);
00739             endEditCP(tiledeco);
00740             
00741             // render cubemaps
00742             if (sides == 6)
00743             {
00744                 MatrixCameraDecoratorPtr deco = MatrixCameraDecorator::create();
00745                 
00746                 for (j=0; j<sides; j++)
00747                 {
00748                     beginEditCP(deco);
00749                         deco->setDecoratee(cP);
00750                         deco->setPreProjection(transforms[j]);
00751                     endEditCP(deco);
00752                     
00753                     beginEditCP(tiledeco);
00754                         tiledeco->setDecoratee(deco);
00755                     endEditCP(tiledeco);
00756                     
00757                     action->setCamera(tiledeco.getCPtr());
00758                     
00759                     for (y1=0; y1 < imgHeight; y1 += winHeight)
00760                     {
00761                         y2 = osgMin((float)(y1+winHeight-1), (float)(imgHeight-1));
00762                         th = y2 - y1 + 1;
00763                         
00764                         for (x1=0; x1 < imgWidth; x1 += winWidth)
00765                         {
00766                             x2 = osgMin((float)(x1+winWidth-1), (float)(imgWidth-1));
00767                             tw = x2 - x1 + 1;
00768                             
00769                             // set tile size to maximal renderable size
00770                             beginEditCP(tiledeco);
00771                                 tiledeco->setSize(  x1/(float)imgWidth,     y1/(float)imgHeight,
00772                                                 (x2+1)/(float)imgWidth, (y2+1)/(float)imgHeight);
00773                             endEditCP(tiledeco);
00774                             
00775                             beginEditCP(getPtr(), LeftFieldMask | RightFieldMask |
00776                                                   BottomFieldMask | TopFieldMask);
00777                                 setSize(0, 0, tw-1, th-1);
00778                             endEditCP(getPtr(), LeftFieldMask | RightFieldMask |
00779                                                 BottomFieldMask | TopFieldMask);
00780                             
00781                             // activate viewport settings
00782                             activate();
00783 
00784                             // render tile for one side of cube
00785                             if (getRenderNodes().getSize() == 0)
00786                             {
00787                                 action->apply(getRoot());
00788                             }
00789                             else
00790                             {
00791                                 for (i=0; i<getRenderNodes().getSize(); i++)
00792                                 {
00793                                     NodePtr rdnode = getRenderNodes()[i];  
00794                                     if (rdnode != NullFC)
00795                                         action->apply(rdnode);
00796                                 }
00797                             }
00798                             
00799                             for (UInt16 fi=0; fi<getForegrounds().size(); fi++)
00800                                 getForegrounds(fi)->draw(action, this);
00801 
00802                             // deactivate viewport settings
00803                             deactivate();
00804                             
00805                             win->validateGLObject(getTextures(0)->getGLId());
00806                             
00807                             glBindTexture(GL_TEXTURE_CUBE_MAP_ARB, 
00808                                 win->getGLObjectId(getTextures(0)->getGLId()));
00809                             
00810                             glCopyTexSubImage2D(targets[j], 0, x1, y1, 0, 0, tw, th);
00811                             
00812                             if (glGetError() != GL_NO_ERROR)
00813                                 SWARNING << "Error in Cube-Texture-Creation!" << endLog;    
00814                             
00815                             glBindTexture(GL_TEXTURE_CUBE_MAP_ARB, 0);
00816                         }
00817                     }
00818                 }
00819                 
00820                 subRefCP(deco);
00821             }
00822             else if (sides == 1)
00823             {
00824                 beginEditCP(tiledeco);
00825                     tiledeco->setDecoratee(cP);
00826                 endEditCP(tiledeco);
00827                 
00828                 action->setCamera(tiledeco.getCPtr());
00829                 
00830                 for (y1=0; y1 < imgHeight; y1 += winHeight)
00831                 {
00832                     y2 = osgMin((float)(y1+winHeight-1), (float)(imgHeight-1));
00833                     th = y2 - y1 + 1;
00834                     
00835                     for (x1=0; x1 < imgWidth; x1 += winWidth)
00836                     {
00837                         x2 = osgMin((float)(x1+winWidth-1), (float)(imgWidth-1));
00838                         tw = x2 - x1 + 1;
00839                         
00840                         // set tile size to maximal renderable size
00841                         beginEditCP(tiledeco);
00842                             tiledeco->setSize(  x1/(float)imgWidth,     y1/(float)imgHeight,
00843                                             (x2+1)/(float)imgWidth, (y2+1)/(float)imgHeight);
00844                         endEditCP(tiledeco);
00845                         
00846                         beginEditCP(getPtr(), LeftFieldMask | RightFieldMask |
00847                                               BottomFieldMask | TopFieldMask);
00848                             setSize(0, 0, tw-1, th-1);
00849                         endEditCP(getPtr(), LeftFieldMask | RightFieldMask |
00850                                             BottomFieldMask | TopFieldMask);
00851                         
00852                         // activate viewport settings
00853                         activate();
00854 
00855                         // render tile for texture
00856                         if (getRenderNodes().getSize() == 0)
00857                         {
00858                             action->apply(getRoot());
00859                         }
00860                         else
00861                         {
00862                             for (i=0; i<getRenderNodes().getSize(); i++)
00863                             {
00864                                 NodePtr rdnode = getRenderNodes()[i];  
00865                                 if (rdnode != NullFC)
00866                                     action->apply(rdnode);
00867                             }
00868                         }
00869                         
00870                         for (UInt16 fi=0; fi<getForegrounds().size(); fi++)
00871                             getForegrounds(fi)->draw(action, this);
00872                         
00873                         // deactivate viewport settings
00874                         deactivate();
00875 
00876                         win->validateGLObject(getTextures(0)->getGLId());
00877                         
00878                         GLenum target = getTextures(0)->getTarget();
00879                         
00880                         // TODO; check if target is valid and allow usage of 3d texture slices
00881                         if (target == GL_NONE)
00882                             target = GL_TEXTURE_2D;
00883                         
00884                         glBindTexture(target, 
00885                             win->getGLObjectId(getTextures(0)->getGLId()));
00886                         
00887                         glCopyTexSubImage2D(target, 0, x1, y1, 0, 0, tw, th);
00888                         
00889                         if (glGetError() != GL_NO_ERROR)
00890                             SWARNING << "Error in Texture-Creation! " << endLog;    
00891                         
00892                         glBindTexture(target, 0);
00893                     }
00894                 }
00895             }
00896             else if (check && shadowVptPtr != NullFC) 
00897             {
00898                 action->setCamera(getCamera().getCPtr());
00899                 
00900                 shadowVptPtr->render(action);
00901                 
00902                 win->validateGLObject(getTextures(0)->getGLId());
00903                 
00904                 GLenum target = getTextures(0)->getTarget();
00905                 
00906                 if (target == GL_NONE)
00907                     target = GL_TEXTURE_2D;
00908                 
00909                 glBindTexture(target, 
00910                     win->getGLObjectId(getTextures(0)->getGLId()));
00911                 
00912                 glCopyTexSubImage2D(target, 0, 0, 0, 0, 0, imgWidth, imgHeight);
00913                 
00914                 if (glGetError() != GL_NO_ERROR)
00915                     SWARNING << "Error in Texture-Creation of special mode! " << endLog;    
00916                 
00917                 glBindTexture(target, 0);
00918             }
00919             
00920             if (shadowVptPtr != NullFC)    // true if size==0
00921             {
00922                 Int32 k = pos.size() - 1,
00923                       m = fgndBag.size() - 1;
00924                 
00925                 for (j=0;j<n; j++) {
00926                     if (shadowVptPtr->getForegrounds().empty() && m >= 0) {
00927                         shadowVptPtr->getForegrounds().push_back(fgndBag[m--]);
00928                     }
00929                     else if (k >= 0 && pos[k] == j) {
00930                         ForegroundPtr fp = shadowVptPtr->getForegrounds(j);
00931                         fp->setActive(true);
00932                         k--;
00933                     }
00934                     else if (m>=0) {
00935                         fgndIt = shadowVptPtr->getForegrounds().begin() + j;
00936                         shadowVptPtr->getForegrounds().insert(fgndIt, fgndBag[m--]);
00937                     }
00938                 }
00939                 fgndBag.clear();
00940                 
00941                 beginEditCP(shadowVptPtr, LeftFieldMask | RightFieldMask |
00942                                           BottomFieldMask | TopFieldMask);
00943                     shadowVptPtr->setSize(svpL, svpB, svpR, svpT);
00944                 endEditCP(shadowVptPtr, LeftFieldMask | RightFieldMask |
00945                                         BottomFieldMask | TopFieldMask);
00946                 
00947                 check++;
00948             }
00949             
00950             subRefCP(tiledeco);
00951             
00952             beginEditCP(getPtr(), LeftFieldMask | RightFieldMask | 
00953                                   BottomFieldMask | TopFieldMask |
00954                                   StorageWidthFieldMask | StorageHeightFieldMask);
00955                 setSize(0, 0, imgWidth-1, imgHeight-1);
00956             if (sides)
00957             {
00958                 setStorageWidth(imgWidth);
00959                 setStorageHeight(imgHeight);
00960             }
00961             endEditCP(getPtr(), LeftFieldMask | RightFieldMask | 
00962                                 BottomFieldMask | TopFieldMask |
00963                                 StorageWidthFieldMask | StorageHeightFieldMask);
00964 
00965             for (i=0; i<getExcludeNodes().getSize(); i++)
00966             {
00967                 NodePtr exnode = getExcludeNodes()[i];
00968                 if (exnode != NullFC)
00969                     exnode->setActive(true);
00970             }
00971         }
00972     }
00973     else
00974     {
00975         PFNGLDRAWBUFFERSARBPROC glDrawBuffersARB =
00976             (PFNGLDRAWBUFFERSARBPROC)win->getFunction(_funcDrawBuffers);    
00977     
00978         // get number of render targets
00979         Int32 numBuffers = getMaxBuffers();
00980         GLenum *buffers = NULL;
00981         
00982         if (getTextures().getSize() < numBuffers)
00983             numBuffers = getTextures().getSize();
00984 
00985         if (numBuffers > 0) // texture found
00986         {
00987             Int32 i, format;
00988             GLenum target = GL_TEXTURE_2D;
00989 
00990             // find depth & stencil texture
00991             TextureChunkPtr depthTex, stencilTex;
00992             MFTextureChunkPtr colorTextures;
00993             
00994             for (i=0; i<numBuffers; i++)
00995             {
00996                 format = getTextures(i)->getInternalFormat();
00997                 
00998                 if ( format == GL_DEPTH_COMPONENT || 
00999                     (format >= GL_DEPTH_COMPONENT16_ARB &&
01000                     format <= GL_DEPTH_COMPONENT32_ARB) )
01001                 {
01002                     depthTex = getTextures(i);
01003                 }
01004                 else if (format == GL_STENCIL_INDEX) {
01005                     stencilTex = getTextures(i);
01006                 }
01007                 else if (format == GL_DEPTH_STENCIL_EXT) {
01008                     SWARNING << "DEPTH_STENCIL format not yet impl." << endLog;
01009                 }
01010                 else {
01011                     colorTextures.push_back(getTextures(i));
01012                 }
01013             }
01014             
01015             // TODO; allow setting of e.g. FBO_DEPTH_32
01016             //if (!depthTex) 
01017                 format = FBO_DEPTH_24;
01018             // TODO; define DEPTH_STENCIL if depth is used as well
01019             if (stencilTex && depthTex) 
01020             {
01021                 // format |= FBO_STENCIL_8;
01022                 FWARNING((  "Rendering to separate depth and stencil textures "
01023                             "is not possible. Disabling stencil texture.\n" ));         
01024                 stencilTex = NullFC;
01025             }
01026 
01027             if ( !initialize(win, format) )
01028                 assert(0);
01029 
01030             checkGLError("FBO render pre\n");
01031             
01032             bind(win);
01033 
01034             buffers = new GLenum[numBuffers];
01035 
01036             // TODO; optimize these if's
01037             if (!colorTextures.empty())
01038             {
01039                 if (colorTextures.getSize() < numBuffers)
01040                     numBuffers = colorTextures.getSize();
01041                 
01042                 if (depthTex) 
01043                 {
01044                     win->validateGLObject(depthTex->getGLId());
01045                     
01046                     target = depthTex->getTarget();
01047                     
01048                     if (target == GL_NONE)
01049                         target = GL_TEXTURE_2D;
01050                     
01051                     setTarget(win, win->getGLObjectId(depthTex->getGLId()), 
01052                                 GL_DEPTH_ATTACHMENT_EXT, target);                
01053                 }
01054                 else if (stencilTex) 
01055                 {
01056                     win->validateGLObject(stencilTex->getGLId());
01057                     
01058                     target = stencilTex->getTarget();
01059                     
01060                     if (target == GL_NONE)
01061                         target = GL_TEXTURE_2D;
01062                         
01063                     setTarget(win, win->getGLObjectId(stencilTex->getGLId()), 
01064                                 GL_STENCIL_ATTACHMENT_EXT, target);                
01065                 }
01066 
01067                 for (i=0; i<numBuffers; i++)
01068                 {
01069                     buffers[i] = GL_COLOR_ATTACHMENT0_EXT + i;
01070                     
01071                     win->validateGLObject(colorTextures[i]->getGLId());
01072     
01073                     target = colorTextures[i]->getTarget();
01074     
01075                     // TODO; check if target is valid and allow usage of 3d texture slices
01076                     if (target == GL_NONE)
01077                         target = GL_TEXTURE_2D;
01078     
01079                     // bind this texture to the current fbo as color_attachment_i
01080                     setTarget(win, win->getGLObjectId(colorTextures[i]->getGLId()), 
01081                                 buffers[i], target);
01082                 }
01083 
01084                 checkFrameBufferStatus(win);
01085             
01086                 // draw scene, the results are being written into the associated textures
01087                 if (glDrawBuffersARB)
01088                     glDrawBuffersARB (numBuffers, buffers);
01089                 else {
01090                     if (numBuffers > 1) {
01091                         FWARNING((  "glDrawBuffersARB not supported, "
01092                                     "can't render to more than 1 buffer.\n" ));
01093                     }
01094                     glDrawBuffer ( *buffers );
01095                 }
01096             }
01097             else if (depthTex)
01098             {
01099                 buffers[0] = GL_DEPTH_ATTACHMENT_EXT;
01100                 numBuffers = 1;
01101                 
01102                 win->validateGLObject(depthTex->getGLId());
01103 
01104                 target = depthTex->getTarget();
01105                 
01106                 if (target == GL_NONE)
01107                     target = GL_TEXTURE_2D;
01108                 
01109                 setTarget(win, win->getGLObjectId(depthTex->getGLId()), buffers[0], target);
01110 
01111                 glDrawBuffer (GL_NONE);
01112                 glReadBuffer (GL_NONE);
01113 
01114                 checkFrameBufferStatus(win);
01115             }
01116             else if (stencilTex)
01117             {
01118                 buffers[0] = GL_STENCIL_ATTACHMENT_EXT;
01119                 numBuffers = 1;
01120                 
01121                 win->validateGLObject(stencilTex->getGLId());
01122 
01123                 target = stencilTex->getTarget();
01124                 
01125                 if (target == GL_NONE)
01126                     target = GL_TEXTURE_2D;
01127                 
01128                 setTarget(win, win->getGLObjectId(stencilTex->getGLId()), buffers[0], target);
01129 
01130                 glDrawBuffer (GL_NONE);
01131                 glReadBuffer (GL_NONE);
01132 
01133                 checkFrameBufferStatus(win);
01134             }
01135 
01136             // render
01137             for (i=0; i<(Int32)getExcludeNodes().getSize(); i++)
01138             {
01139                 NodePtr exnode = getExcludeNodes()[i];
01140                 if (exnode != NullFC)
01141                     exnode->setActive(false);
01142             }
01143             
01144             CameraPtr cP = getCamera();
01145             CameraDecoratorPtr cdP = CameraDecoratorPtr::dcast(cP);
01146 
01147             // ignore decorators!
01148             while (cdP != NullFC)
01149             {
01150                 cP = cdP->getDecoratee();
01151                 cdP = CameraDecoratorPtr::dcast(cP);
01152             }
01153             
01154             action->setCamera(cP.getCPtr());
01155             action->setBackground(getBackground().getCPtr());
01156             action->setViewport(this);
01157             action->setTravMask(getTravMask());
01158             
01159             // activate viewport settings
01160             activate();
01161 
01162             if (getRenderNodes().getSize() == 0)
01163             {
01164                 action->apply(getRoot());
01165             }
01166             else
01167             {
01168                 for (i=0; i<(Int32)getRenderNodes().getSize(); i++)
01169                 {
01170                     NodePtr rdnode = getRenderNodes()[i];  
01171                     if (rdnode != NullFC)
01172                         action->apply(rdnode);
01173                 }
01174             }
01175             
01176             for (UInt16 fi=0; fi<getForegrounds().size(); fi++)
01177                 getForegrounds(fi)->draw(action, this);
01178             
01179             // deactivate viewport settings
01180             deactivate();
01181 
01182             for (i=0; i<(Int32)getExcludeNodes().getSize(); i++)
01183             {
01184                 NodePtr exnode = getExcludeNodes()[i];
01185                 if (exnode != NullFC)
01186                     exnode->setActive(true);
01187             }
01188             
01189             stop(win);
01190 
01191             checkGLError("FBO render post");
01192         
01193             if (buffers)
01194                 delete [] buffers;
01195         }
01196     }
01197     
01198     if (depth)
01199         rAct->setZWriteTrans(zWriteTransSave);
01200 
01201     // reset  special render state
01202     if (_renderParamsFP != NULL)
01203         _renderParamsFP(FBO_RP_NONE);
01204 }

bool FBOViewport::initialize ( Window win,
Int32  format = NONE 
)

Definition at line 364 of file OSGFBOViewport.cpp.

References _funcBindFramebuffer, _funcBindRenderbuffer, _funcCheckFramebufferStatus, _funcFramebufferRenderbuffer, _funcGenFramebuffers, _funcGenRenderbuffers, _funcRenderbufferStorage, osg::beginEditCP(), checkGLError(), osg::endEditCP(), FBO_DEPTH_16, FBO_DEPTH_24, FBO_DEPTH_32, FBO_STENCIL_1, FBO_STENCIL_16, FBO_STENCIL_4, FBO_STENCIL_8, osg::FBOViewportBase::getDirty(), osg::FBOViewportBase::getFrameBufferIndex(), osg::Window::getFunction(), osg::FBOViewportBase::getStorageHeight(), osg::FBOViewportBase::getStorageWidth(), GL_DEPTH_ATTACHMENT_EXT, GL_DEPTH_COMPONENT16_ARB, GL_DEPTH_COMPONENT24_ARB, GL_DEPTH_COMPONENT32_ARB, GL_FRAMEBUFFER_EXT, GL_RENDERBUFFER_EXT, GL_STENCIL_ATTACHMENT_EXT, GL_STENCIL_INDEX16_EXT, GL_STENCIL_INDEX1_EXT, GL_STENCIL_INDEX4_EXT, GL_STENCIL_INDEX8_EXT, GLuint(), osg::FBOViewportBase::setDepthBufferIndex(), osg::FBOViewportBase::setDirty(), osg::FBOViewportBase::setFrameBufferIndex(), and osg::FBOViewportBase::setStencilBufferIndex().

Referenced by render().

00365 {
00366     GLuint fbIndex, dbIndex, sbIndex;
00367     
00368     Int32 width  = getStorageWidth();
00369     Int32 height = getStorageHeight();
00370     
00371     if (width <= 0 || height <= 0)
00372         return false;
00373 
00374     checkGLError("FBO initalize pre");
00375 
00376     if (getFrameBufferIndex() && !getDirty())
00377         return true;
00378     
00379     FBOViewportPtr thisP(*this);
00380     
00381     beginEditCP(thisP);
00382     
00383     setDirty(false);    // force re-initialization
00384 
00385     PFNGLBINDFRAMEBUFFEREXTPROC glBindFramebufferEXT =
00386         (PFNGLBINDFRAMEBUFFEREXTPROC)win->getFunction(_funcBindFramebuffer);
00387     PFNGLBINDRENDERBUFFEREXTPROC glBindRenderbufferEXT =
00388         (PFNGLBINDRENDERBUFFEREXTPROC)win->getFunction(_funcBindRenderbuffer);
00389     PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glCheckFramebufferStatusEXT =
00390         (PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC)win->getFunction(_funcCheckFramebufferStatus);
00391     PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glFramebufferRenderbufferEXT =
00392         (PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC)win->getFunction(_funcFramebufferRenderbuffer);
00393     PFNGLGENFRAMEBUFFERSEXTPROC glGenFramebuffersEXT =
00394         (PFNGLGENFRAMEBUFFERSEXTPROC)win->getFunction(_funcGenFramebuffers);
00395     PFNGLGENRENDERBUFFERSEXTPROC glGenRenderbuffersEXT =
00396         (PFNGLGENRENDERBUFFERSEXTPROC)win->getFunction(_funcGenRenderbuffers);
00397     PFNGLRENDERBUFFERSTORAGEEXTPROC glRenderbufferStorageEXT =
00398         (PFNGLRENDERBUFFERSTORAGEEXTPROC)win->getFunction(_funcRenderbufferStorage);
00399     
00400     glGenFramebuffersEXT(1, &fbIndex);
00401     glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbIndex);
00402     setFrameBufferIndex(fbIndex);
00403 
00404     glDrawBuffer (GL_FALSE);
00405     glReadBuffer (GL_FALSE);
00406     
00407     GLuint depth = (format & FBO_DEPTH_16) ? GL_DEPTH_COMPONENT16_ARB :
00408                    (format & FBO_DEPTH_24) ? GL_DEPTH_COMPONENT24_ARB :
00409                    (format & FBO_DEPTH_32) ? GL_DEPTH_COMPONENT32_ARB : 0;
00410     
00411     GLuint stencil = (format & FBO_STENCIL_1 ) ? GL_STENCIL_INDEX1_EXT  :
00412                      (format & FBO_STENCIL_4 ) ? GL_STENCIL_INDEX4_EXT  :
00413                      (format & FBO_STENCIL_8 ) ? GL_STENCIL_INDEX8_EXT  :
00414                      (format & FBO_STENCIL_16) ? GL_STENCIL_INDEX16_EXT : 0;
00415 
00416     checkGLError("FBO initalize pre depth");
00417            
00418     if (depth)
00419     {
00420         glGenRenderbuffersEXT(1, &dbIndex);
00421         glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, dbIndex);
00422         setDepthBufferIndex(dbIndex);
00423         
00424         glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, depth, width, height);
00425         glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT,  GL_DEPTH_ATTACHMENT_EXT,
00426                                      GL_RENDERBUFFER_EXT, dbIndex);
00427     }
00428 
00429     checkGLError("FBO initalize pre stencil");
00430     
00431     if (stencil)
00432     {
00433         glGenRenderbuffersEXT(1, &sbIndex);
00434         glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, sbIndex);
00435         setStencilBufferIndex(sbIndex);
00436         
00437         glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, stencil, width, height);
00438         glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT,  GL_STENCIL_ATTACHMENT_EXT,
00439                                      GL_RENDERBUFFER_EXT, sbIndex);
00440     }
00441     
00442     checkGLError("FBO initalize post stencil");
00443     
00444     endEditCP(thisP);
00445     
00446     bool result = true; //checkFrameBufferStatus(win);
00447     
00448     glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
00449     glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, 0);
00450 
00451     checkGLError("FBO initalize post");
00452     
00453     return result;
00454 }

void FBOViewport::setTarget ( Window win,
UInt32  id,
GLenum  attachment,
GLenum  target 
)

Definition at line 456 of file OSGFBOViewport.cpp.

References _funcFramebufferTexture1D, _funcFramebufferTexture2D, _funcFramebufferTexture3D, checkGLError(), osg::endLog(), FWARNING, osg::FBOViewportBase::getFrameBufferIndex(), osg::Window::getFunction(), GL_FRAMEBUFFER_EXT, and SWARNING.

Referenced by render().

00457 {
00458     PFNGLFRAMEBUFFERTEXTURE1DEXTPROC glFramebufferTexture1DEXT =
00459         (PFNGLFRAMEBUFFERTEXTURE1DEXTPROC)win->getFunction(_funcFramebufferTexture1D);
00460     PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glFramebufferTexture2DEXT =
00461         (PFNGLFRAMEBUFFERTEXTURE2DEXTPROC)win->getFunction(_funcFramebufferTexture2D);
00462     PFNGLFRAMEBUFFERTEXTURE3DEXTPROC glFramebufferTexture3DEXT =
00463         (PFNGLFRAMEBUFFERTEXTURE3DEXTPROC)win->getFunction(_funcFramebufferTexture3D);
00464 
00465     if (getFrameBufferIndex())
00466     {
00467         glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, attachment, target, id, 0);
00468 
00469         if (!checkGLError("setTarget post"))
00470         {
00471             SWARNING << "Error with attachment: " << attachment
00472                      << ", id: " << id << ", target: " << target
00473                      << endLog;
00474         }
00475     }
00476     else
00477         FWARNING(("Invalid FrameBufferObject index!\n"));
00478 }

void FBOViewport::bind ( Window win  ) 

Definition at line 480 of file OSGFBOViewport.cpp.

References _funcBindFramebuffer, FWARNING, osg::FBOViewportBase::getFrameBufferIndex(), osg::Window::getFunction(), and GL_FRAMEBUFFER_EXT.

Referenced by render().

00481 {
00482     PFNGLBINDFRAMEBUFFEREXTPROC glBindFramebufferEXT =
00483         (PFNGLBINDFRAMEBUFFEREXTPROC)win->getFunction(_funcBindFramebuffer);
00484         
00485     if (getFrameBufferIndex()) 
00486         glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, getFrameBufferIndex());
00487     else
00488         FWARNING(("Invalid FrameBufferObject index!\n"));
00489 }

void FBOViewport::stop ( Window win  ) 

unbind the frambuffer object, so subsequent drawing ops are not drawn into the fbo targets; '0' means windowing system provided framebuffer

Definition at line 493 of file OSGFBOViewport.cpp.

References _funcBindFramebuffer, osg::FBOViewportBase::getFrameBufferIndex(), osg::Window::getFunction(), and GL_FRAMEBUFFER_EXT.

Referenced by render().

00494 {
00495     PFNGLBINDFRAMEBUFFEREXTPROC glBindFramebufferEXT =
00496         (PFNGLBINDFRAMEBUFFEREXTPROC)win->getFunction(_funcBindFramebuffer);
00497         
00498     if (getFrameBufferIndex())
00499         glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
00500 }

bool FBOViewport::checkFrameBufferStatus ( Window win  ) 

not available on all plattforms case GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT: FWARNING(("%x: framebuffer INCOMPLETE_DUPLICATE_ATTACHMENT\n", status)); break;

Definition at line 1232 of file OSGFBOViewport.cpp.

References _funcCheckFramebufferStatus, FINFO, FWARNING, osg::Window::getFunction(), GL_FRAMEBUFFER_BINDING_EXT, GL_FRAMEBUFFER_COMPLETE_EXT, GL_FRAMEBUFFER_EXT, GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT, GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT, GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT, GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT, GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT, GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT, GL_FRAMEBUFFER_UNSUPPORTED_EXT, and GLenum.

Referenced by render().

01233 {
01234     PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glCheckFramebufferStatusEXT =
01235         (PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC)win->getFunction(_funcCheckFramebufferStatus);
01236     GLenum errCode, status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);
01237     
01238     switch(status)
01239     {
01240         case GL_FRAMEBUFFER_COMPLETE_EXT: 
01241         FINFO(("%x: framebuffer complete!\n", status));
01242         break; 
01243         case GL_FRAMEBUFFER_UNSUPPORTED_EXT: 
01244         FWARNING(("%x: framebuffer GL_FRAMEBUFFER_UNSUPPORTED_EXT\n", status));
01245         // choose different formats
01246         return false;
01247         case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT:
01248         FWARNING(("%x: framebuffer INCOMPLETE_ATTACHMENT\n", status));
01249         break;
01250         case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT:
01251         FWARNING(("%x: framebuffer FRAMEBUFFER_MISSING_ATTACHMENT\n", status));
01252         break;
01253         case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT:
01254         FWARNING(("%x: framebuffer FRAMEBUFFER_DIMENSIONS\n", status));
01255         break;
01261         case GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT:
01262         FWARNING(("%x: framebuffer INCOMPLETE_FORMATS\n", status));
01263         break;
01264         case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT:
01265         FWARNING(("%x: framebuffer INCOMPLETE_DRAW_BUFFER\n", status));
01266         break;
01267         case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT:
01268         FWARNING(("%x: framebuffer INCOMPLETE_READ_BUFFER\n", status));
01269         break;
01270         case GL_FRAMEBUFFER_BINDING_EXT:
01271         FWARNING(("%x: framebuffer BINDING_EXT\n", status));
01272         break;
01273         default: 
01274         return false;
01275     }
01276     
01277     if ((errCode = glGetError()) != GL_NO_ERROR)
01278     {
01279         const GLubyte *errString = gluErrorString(errCode);
01280         FWARNING(("OpenGL Error: %s!\n", errString));
01281         return false;
01282     }
01283     return true;
01284 }

Int32 FBOViewport::getMaxBuffers ( void   ) 

Definition at line 1206 of file OSGFBOViewport.cpp.

References FINFO, and GL_MAX_COLOR_ATTACHMENTS_EXT.

Referenced by render().

01207 {
01208   GLint max = 0;
01209   
01210   glGetIntegerv(GL_MAX_COLOR_ATTACHMENTS_EXT, &max);
01211   FINFO(("GL_MAX_COLOR_ATTACHMENTS_EXT: %d\n", max));
01212 
01213   return max;
01214 }

void FBOViewport::changed ( BitVector  whichField,
UInt32  origin 
) [virtual]

Reimplemented from osg::Viewport.

Definition at line 339 of file OSGFBOViewport.cpp.

References osg::Viewport::changed().

00340 {
00341     Inherited::changed(whichField, origin);
00342 }

void FBOViewport::dump ( UInt32  uiIndent = 0,
const BitVector  bvFlags = 0 
) const [virtual]

Reimplemented from osg::Viewport.

Definition at line 344 of file OSGFBOViewport.cpp.

References SLOG.

00346 {
00347     SLOG << "Dump FBOViewport NI" << std::endl;
00348 }

void FBOViewport::setRenderParamsCB ( renderparamscbfp  fp  )  [static]

Definition at line 249 of file OSGFBOViewport.cpp.

References _renderParamsFP.

00250 {
00251     _renderParamsFP = fp;
00252 }

bool FBOViewport::extensionCheck ( void   )  [protected]

Definition at line 1217 of file OSGFBOViewport.cpp.

References _framebuffer_object_extension, FDEBUG, FWARNING, and osg::ViewportBase::getParent().

Referenced by render().

01218 {
01219     if ( !getParent()->hasExtension(_framebuffer_object_extension) )
01220     {
01221         FWARNING(("I need GL_EXT_framebuffer_object-Extension!\n"));
01222         return false;
01223     }
01224     else
01225     {
01226         FDEBUG(("Extensions-Check done!\n"));
01227         return true;
01228     }
01229 }

void FBOViewport::onCreate ( const FBOViewport source = NULL  )  [protected]

Definition at line 350 of file OSGFBOViewport.cpp.

References osg::GlobalSystemState, and osg::Startup.

00351 {
00352     // if we're in startup this is the prototype ...
00353     if (OSG::GlobalSystemState == OSG::Startup)
00354         return;
00355 
00356     // TODO; get maxBuffers - but window is needed
00357 }

void FBOViewport::onDestroy ( void   )  [protected, virtual]

Reimplemented from osg::FieldContainer.

Definition at line 359 of file OSGFBOViewport.cpp.

00360 {
00361     // TODO; delete buffers - but window is needed
00362 }

void FBOViewport::initMethod ( void   )  [static, private]

Reimplemented from osg::Viewport.

Definition at line 245 of file OSGFBOViewport.cpp.

00246 {
00247 }

void osg::FBOViewport::operator= ( const FBOViewport source  )  [private]

osg::FieldContainerType & osg::FBOViewportBase::getClassType ( void   )  [inline, static, inherited]

Reimplemented from osg::ViewportBase.

Definition at line 58 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_type.

Referenced by osg::FBOViewportBase::create().

00059 {
00060     return _type; 
00061 } 

osg::UInt32 osg::FBOViewportBase::getClassTypeId ( void   )  [inline, static, inherited]

Reimplemented from osg::ViewportBase.

Definition at line 65 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_type, and osg::TypeBase::getId().

00066 {
00067     return _type.getId(); 
00068 } 

FieldContainerType & osg::FBOViewportBase::getType ( void   )  [virtual, inherited]

Reimplemented from osg::ViewportBase.

Definition at line 249 of file OSGFBOViewportBase.cpp.

References osg::FBOViewportBase::_type.

00250 {
00251     return _type; 
00252 } 

const FieldContainerType & osg::FBOViewportBase::getType ( void   )  const [virtual, inherited]

Reimplemented from osg::ViewportBase.

Definition at line 254 of file OSGFBOViewportBase.cpp.

References osg::FBOViewportBase::_type.

00255 {
00256     return _type;
00257 } 

UInt32 osg::FBOViewportBase::getContainerSize ( void   )  const [virtual, inherited]

Reimplemented from osg::ViewportBase.

Definition at line 269 of file OSGFBOViewportBase.cpp.

00270 { 
00271     return sizeof(FBOViewport); 
00272 }

SFBool * osg::FBOViewportBase::getSFEnabled ( void   )  [inline, inherited]

Definition at line 101 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfEnabled.

00102 {
00103     return &_sfEnabled;
00104 }

MFNodePtr * osg::FBOViewportBase::getMFExcludeNodes ( void   )  [inline, inherited]

Definition at line 108 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_mfExcludeNodes.

00109 {
00110     return &_mfExcludeNodes;
00111 }

MFNodePtr * osg::FBOViewportBase::getMFRenderNodes ( void   )  [inline, inherited]

Definition at line 115 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_mfRenderNodes.

00116 {
00117     return &_mfRenderNodes;
00118 }

MFTextureChunkPtr * osg::FBOViewportBase::getMFTextures ( void   )  [inline, inherited]

Definition at line 122 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_mfTextures.

00123 {
00124     return &_mfTextures;
00125 }

SFBool * osg::FBOViewportBase::getSFFboOn ( void   )  [inline, inherited]

Definition at line 129 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfFboOn.

00130 {
00131     return &_sfFboOn;
00132 }

SFInt32 * osg::FBOViewportBase::getSFStorageWidth ( void   )  [inline, inherited]

Definition at line 136 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfStorageWidth.

00137 {
00138     return &_sfStorageWidth;
00139 }

SFInt32 * osg::FBOViewportBase::getSFStorageHeight ( void   )  [inline, inherited]

Definition at line 143 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfStorageHeight.

00144 {
00145     return &_sfStorageHeight;
00146 }

SFBool * osg::FBOViewportBase::getSFGenCubemaps ( void   )  [inline, inherited]

Definition at line 150 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfGenCubemaps.

00151 {
00152     return &_sfGenCubemaps;
00153 }

SFBool * osg::FBOViewportBase::getSFGenDepthmaps ( void   )  [inline, inherited]

Definition at line 157 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfGenDepthmaps.

00158 {
00159     return &_sfGenDepthmaps;
00160 }

SFBool * osg::FBOViewportBase::getSFDirty ( void   )  [inline, inherited]

Definition at line 185 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfDirty.

00186 {
00187     return &_sfDirty;
00188 }

SFBool * osg::FBOViewportBase::getSFReadBuffer ( void   )  [inline, inherited]

Definition at line 192 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfReadBuffer.

00193 {
00194     return &_sfReadBuffer;
00195 }

bool & osg::FBOViewportBase::getEnabled ( void   )  [inline, inherited]

Definition at line 200 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfEnabled, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

Referenced by render().

00201 {
00202     return _sfEnabled.getValue();
00203 }

const bool & osg::FBOViewportBase::getEnabled ( void   )  const [inline, inherited]

Definition at line 207 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfEnabled, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00208 {
00209     return _sfEnabled.getValue();
00210 }

bool & osg::FBOViewportBase::getFboOn ( void   )  [inline, inherited]

Definition at line 221 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfFboOn, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

Referenced by render().

00222 {
00223     return _sfFboOn.getValue();
00224 }

const bool & osg::FBOViewportBase::getFboOn ( void   )  const [inline, inherited]

Definition at line 228 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfFboOn, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00229 {
00230     return _sfFboOn.getValue();
00231 }

Int32 & osg::FBOViewportBase::getStorageWidth ( void   )  [inline, inherited]

Definition at line 242 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfStorageWidth, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

Referenced by initialize(), and render().

00243 {
00244     return _sfStorageWidth.getValue();
00245 }

const Int32 & osg::FBOViewportBase::getStorageWidth ( void   )  const [inline, inherited]

Definition at line 249 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfStorageWidth, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00250 {
00251     return _sfStorageWidth.getValue();
00252 }

Int32 & osg::FBOViewportBase::getStorageHeight ( void   )  [inline, inherited]

Definition at line 263 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfStorageHeight, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

Referenced by initialize(), and render().

00264 {
00265     return _sfStorageHeight.getValue();
00266 }

const Int32 & osg::FBOViewportBase::getStorageHeight ( void   )  const [inline, inherited]

Definition at line 270 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfStorageHeight, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00271 {
00272     return _sfStorageHeight.getValue();
00273 }

bool & osg::FBOViewportBase::getGenCubemaps ( void   )  [inline, inherited]

Definition at line 284 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfGenCubemaps, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

Referenced by render().

00285 {
00286     return _sfGenCubemaps.getValue();
00287 }

const bool & osg::FBOViewportBase::getGenCubemaps ( void   )  const [inline, inherited]

Definition at line 291 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfGenCubemaps, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00292 {
00293     return _sfGenCubemaps.getValue();
00294 }

bool & osg::FBOViewportBase::getGenDepthmaps ( void   )  [inline, inherited]

Definition at line 305 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfGenDepthmaps, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

Referenced by render().

00306 {
00307     return _sfGenDepthmaps.getValue();
00308 }

const bool & osg::FBOViewportBase::getGenDepthmaps ( void   )  const [inline, inherited]

Definition at line 312 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfGenDepthmaps, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00313 {
00314     return _sfGenDepthmaps.getValue();
00315 }

bool & osg::FBOViewportBase::getDirty ( void   )  [inline, inherited]

Definition at line 389 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfDirty, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

Referenced by initialize().

00390 {
00391     return _sfDirty.getValue();
00392 }

const bool & osg::FBOViewportBase::getDirty ( void   )  const [inline, inherited]

Definition at line 396 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfDirty, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00397 {
00398     return _sfDirty.getValue();
00399 }

bool & osg::FBOViewportBase::getReadBuffer ( void   )  [inline, inherited]

Definition at line 410 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfReadBuffer, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00411 {
00412     return _sfReadBuffer.getValue();
00413 }

const bool & osg::FBOViewportBase::getReadBuffer ( void   )  const [inline, inherited]

Definition at line 417 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfReadBuffer, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00418 {
00419     return _sfReadBuffer.getValue();
00420 }

NodePtr & osg::FBOViewportBase::getExcludeNodes ( const UInt32  index  )  [inline, inherited]

Definition at line 432 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_mfExcludeNodes.

00433 {
00434     return _mfExcludeNodes[index];
00435 }

MFNodePtr & osg::FBOViewportBase::getExcludeNodes ( void   )  [inline, inherited]

Definition at line 439 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_mfExcludeNodes.

Referenced by render().

00440 {
00441     return _mfExcludeNodes;
00442 }

const MFNodePtr & osg::FBOViewportBase::getExcludeNodes ( void   )  const [inline, inherited]

Definition at line 446 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_mfExcludeNodes.

00447 {
00448     return _mfExcludeNodes;
00449 }

NodePtr & osg::FBOViewportBase::getRenderNodes ( const UInt32  index  )  [inline, inherited]

Definition at line 453 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_mfRenderNodes.

00454 {
00455     return _mfRenderNodes[index];
00456 }

MFNodePtr & osg::FBOViewportBase::getRenderNodes ( void   )  [inline, inherited]

Definition at line 460 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_mfRenderNodes.

Referenced by render().

00461 {
00462     return _mfRenderNodes;
00463 }

const MFNodePtr & osg::FBOViewportBase::getRenderNodes ( void   )  const [inline, inherited]

Definition at line 467 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_mfRenderNodes.

00468 {
00469     return _mfRenderNodes;
00470 }

TextureChunkPtr & osg::FBOViewportBase::getTextures ( const UInt32  index  )  [inline, inherited]

Definition at line 474 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_mfTextures.

00475 {
00476     return _mfTextures[index];
00477 }

MFTextureChunkPtr & osg::FBOViewportBase::getTextures ( void   )  [inline, inherited]

Definition at line 481 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_mfTextures.

Referenced by render().

00482 {
00483     return _mfTextures;
00484 }

const MFTextureChunkPtr & osg::FBOViewportBase::getTextures ( void   )  const [inline, inherited]

Definition at line 488 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_mfTextures.

00489 {
00490     return _mfTextures;
00491 }

void osg::FBOViewportBase::setEnabled ( const bool &  value  )  [inline, inherited]

Definition at line 214 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfEnabled, and osg::SField< FieldTypeT, fieldNameSpace >::setValue().

00215 {
00216     _sfEnabled.setValue(value);
00217 }

void osg::FBOViewportBase::setFboOn ( const bool &  value  )  [inline, inherited]

Definition at line 235 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfFboOn, and osg::SField< FieldTypeT, fieldNameSpace >::setValue().

00236 {
00237     _sfFboOn.setValue(value);
00238 }

void osg::FBOViewportBase::setStorageWidth ( const Int32 value  )  [inline, inherited]

Definition at line 256 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfStorageWidth, and osg::SField< FieldTypeT, fieldNameSpace >::setValue().

Referenced by render().

00257 {
00258     _sfStorageWidth.setValue(value);
00259 }

void osg::FBOViewportBase::setStorageHeight ( const Int32 value  )  [inline, inherited]

Definition at line 277 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfStorageHeight, and osg::SField< FieldTypeT, fieldNameSpace >::setValue().

Referenced by render().

00278 {
00279     _sfStorageHeight.setValue(value);
00280 }

void osg::FBOViewportBase::setGenCubemaps ( const bool &  value  )  [inline, inherited]

void osg::FBOViewportBase::setGenDepthmaps ( const bool &  value  )  [inline, inherited]

void osg::FBOViewportBase::setDirty ( const bool &  value  )  [inline, inherited]

Definition at line 403 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfDirty, and osg::SField< FieldTypeT, fieldNameSpace >::setValue().

Referenced by initialize().

00404 {
00405     _sfDirty.setValue(value);
00406 }

void osg::FBOViewportBase::setReadBuffer ( const bool &  value  )  [inline, inherited]

UInt32 osg::FBOViewportBase::getBinSize ( const BitVector whichField  )  [virtual, inherited]

Reimplemented from osg::ViewportBase.

Definition at line 360 of file OSGFBOViewportBase.cpp.

References osg::FBOViewportBase::_mfExcludeNodes, osg::FBOViewportBase::_mfRenderNodes, osg::FBOViewportBase::_mfTextures, osg::FBOViewportBase::_sfDepthBufferIndex, osg::FBOViewportBase::_sfDirty, osg::FBOViewportBase::_sfEnabled, osg::FBOViewportBase::_sfFboOn, osg::FBOViewportBase::_sfFrameBufferIndex, osg::FBOViewportBase::_sfGenCubemaps, osg::FBOViewportBase::_sfGenDepthmaps, osg::FBOViewportBase::_sfReadBuffer, osg::FBOViewportBase::_sfStencilBufferIndex, osg::FBOViewportBase::_sfStorageHeight, osg::FBOViewportBase::_sfStorageWidth, osg::FBOViewportBase::DepthBufferIndexFieldMask, osg::FBOViewportBase::DirtyFieldMask, osg::FBOViewportBase::EnabledFieldMask, osg::FBOViewportBase::ExcludeNodesFieldMask, osg::FBOViewportBase::FboOnFieldMask, osg::FBOViewportBase::FrameBufferIndexFieldMask, osg::FBOViewportBase::GenCubemapsFieldMask, osg::FBOViewportBase::GenDepthmapsFieldMask, osg::MField< FieldTypeT, fieldNameSpace >::getBinSize(), osg::SField< FieldTypeT, fieldNameSpace >::getBinSize(), osg::ViewportBase::getBinSize(), osg::FieldBits::NoField, osg::FBOViewportBase::ReadBufferFieldMask, osg::FBOViewportBase::RenderNodesFieldMask, osg::FBOViewportBase::StencilBufferIndexFieldMask, osg::FBOViewportBase::StorageHeightFieldMask, osg::FBOViewportBase::StorageWidthFieldMask, and osg::FBOViewportBase::TexturesFieldMask.

00361 {
00362     UInt32 returnValue = Inherited::getBinSize(whichField);
00363 
00364     if(FieldBits::NoField != (EnabledFieldMask & whichField))
00365     {
00366         returnValue += _sfEnabled.getBinSize();
00367     }
00368 
00369     if(FieldBits::NoField != (ExcludeNodesFieldMask & whichField))
00370     {
00371         returnValue += _mfExcludeNodes.getBinSize();
00372     }
00373 
00374     if(FieldBits::NoField != (RenderNodesFieldMask & whichField))
00375     {
00376         returnValue += _mfRenderNodes.getBinSize();
00377     }
00378 
00379     if(FieldBits::NoField != (TexturesFieldMask & whichField))
00380     {
00381         returnValue += _mfTextures.getBinSize();
00382     }
00383 
00384     if(FieldBits::NoField != (FboOnFieldMask & whichField))
00385     {
00386         returnValue += _sfFboOn.getBinSize();
00387     }
00388 
00389     if(FieldBits::NoField != (StorageWidthFieldMask & whichField))
00390     {
00391         returnValue += _sfStorageWidth.getBinSize();
00392     }
00393 
00394     if(FieldBits::NoField != (StorageHeightFieldMask & whichField))
00395     {
00396         returnValue += _sfStorageHeight.getBinSize();
00397     }
00398 
00399     if(FieldBits::NoField != (GenCubemapsFieldMask & whichField))
00400     {
00401         returnValue += _sfGenCubemaps.getBinSize();
00402     }
00403 
00404     if(FieldBits::NoField != (GenDepthmapsFieldMask & whichField))
00405     {
00406         returnValue += _sfGenDepthmaps.getBinSize();
00407     }
00408 
00409     if(FieldBits::NoField != (FrameBufferIndexFieldMask & whichField))
00410     {
00411         returnValue += _sfFrameBufferIndex.getBinSize();
00412     }
00413 
00414     if(FieldBits::NoField != (DepthBufferIndexFieldMask & whichField))
00415     {
00416         returnValue += _sfDepthBufferIndex.getBinSize();
00417     }
00418 
00419     if(FieldBits::NoField != (StencilBufferIndexFieldMask & whichField))
00420     {
00421         returnValue += _sfStencilBufferIndex.getBinSize();
00422     }
00423 
00424     if(FieldBits::NoField != (DirtyFieldMask & whichField))
00425     {
00426         returnValue += _sfDirty.getBinSize();
00427     }
00428 
00429     if(FieldBits::NoField != (ReadBufferFieldMask & whichField))
00430     {
00431         returnValue += _sfReadBuffer.getBinSize();
00432     }
00433 
00434 
00435     return returnValue;
00436 }

void osg::FBOViewportBase::copyToBin ( BinaryDataHandler pMem,
const BitVector whichField 
) [virtual, inherited]

Reimplemented from osg::ViewportBase.

Definition at line 438 of file OSGFBOViewportBase.cpp.

References osg::FBOViewportBase::_mfExcludeNodes, osg::FBOViewportBase::_mfRenderNodes, osg::FBOViewportBase::_mfTextures, osg::FBOViewportBase::_sfDepthBufferIndex, osg::FBOViewportBase::_sfDirty, osg::FBOViewportBase::_sfEnabled, osg::FBOViewportBase::_sfFboOn, osg::FBOViewportBase::_sfFrameBufferIndex, osg::FBOViewportBase::_sfGenCubemaps, osg::FBOViewportBase::_sfGenDepthmaps, osg::FBOViewportBase::_sfReadBuffer, osg::FBOViewportBase::_sfStencilBufferIndex, osg::FBOViewportBase::_sfStorageHeight, osg::FBOViewportBase::_sfStorageWidth, osg::MField< FieldTypeT, fieldNameSpace >::copyToBin(), osg::SField< FieldTypeT, fieldNameSpace >::copyToBin(), osg::ViewportBase::copyToBin(), osg::FBOViewportBase::DepthBufferIndexFieldMask, osg::FBOViewportBase::DirtyFieldMask, osg::FBOViewportBase::EnabledFieldMask, osg::FBOViewportBase::ExcludeNodesFieldMask, osg::FBOViewportBase::FboOnFieldMask, osg::FBOViewportBase::FrameBufferIndexFieldMask, osg::FBOViewportBase::GenCubemapsFieldMask, osg::FBOViewportBase::GenDepthmapsFieldMask, osg::FieldBits::NoField, osg::FBOViewportBase::ReadBufferFieldMask, osg::FBOViewportBase::RenderNodesFieldMask, osg::FBOViewportBase::StencilBufferIndexFieldMask, osg::FBOViewportBase::StorageHeightFieldMask, osg::FBOViewportBase::StorageWidthFieldMask, and osg::FBOViewportBase::TexturesFieldMask.

00440 {
00441     Inherited::copyToBin(pMem, whichField);
00442 
00443     if(FieldBits::NoField != (EnabledFieldMask & whichField))
00444     {
00445         _sfEnabled.copyToBin(pMem);
00446     }
00447 
00448     if(FieldBits::NoField != (ExcludeNodesFieldMask & whichField))
00449     {
00450         _mfExcludeNodes.copyToBin(pMem);
00451     }
00452 
00453     if(FieldBits::NoField != (RenderNodesFieldMask & whichField))
00454     {
00455         _mfRenderNodes.copyToBin(pMem);
00456     }
00457 
00458     if(FieldBits::NoField != (TexturesFieldMask & whichField))
00459     {
00460         _mfTextures.copyToBin(pMem);
00461     }
00462 
00463     if(FieldBits::NoField != (FboOnFieldMask & whichField))
00464     {
00465         _sfFboOn.copyToBin(pMem);
00466     }
00467 
00468     if(FieldBits::NoField != (StorageWidthFieldMask & whichField))
00469     {
00470         _sfStorageWidth.copyToBin(pMem);
00471     }
00472 
00473     if(FieldBits::NoField != (StorageHeightFieldMask & whichField))
00474     {
00475         _sfStorageHeight.copyToBin(pMem);
00476     }
00477 
00478     if(FieldBits::NoField != (GenCubemapsFieldMask & whichField))
00479     {
00480         _sfGenCubemaps.copyToBin(pMem);
00481     }
00482 
00483     if(FieldBits::NoField != (GenDepthmapsFieldMask & whichField))
00484     {
00485         _sfGenDepthmaps.copyToBin(pMem);
00486     }
00487 
00488     if(FieldBits::NoField != (FrameBufferIndexFieldMask & whichField))
00489     {
00490         _sfFrameBufferIndex.copyToBin(pMem);
00491     }
00492 
00493     if(FieldBits::NoField != (DepthBufferIndexFieldMask & whichField))
00494     {
00495         _sfDepthBufferIndex.copyToBin(pMem);
00496     }
00497 
00498     if(FieldBits::NoField != (StencilBufferIndexFieldMask & whichField))
00499     {
00500         _sfStencilBufferIndex.copyToBin(pMem);
00501     }
00502 
00503     if(FieldBits::NoField != (DirtyFieldMask & whichField))
00504     {
00505         _sfDirty.copyToBin(pMem);
00506     }
00507 
00508     if(FieldBits::NoField != (ReadBufferFieldMask & whichField))
00509     {
00510         _sfReadBuffer.copyToBin(pMem);
00511     }
00512 
00513 
00514 }

void osg::FBOViewportBase::copyFromBin ( BinaryDataHandler pMem,
const BitVector whichField 
) [virtual, inherited]

Reimplemented from osg::ViewportBase.

Definition at line 516 of file OSGFBOViewportBase.cpp.

References osg::FBOViewportBase::_mfExcludeNodes, osg::FBOViewportBase::_mfRenderNodes, osg::FBOViewportBase::_mfTextures, osg::FBOViewportBase::_sfDepthBufferIndex, osg::FBOViewportBase::_sfDirty, osg::FBOViewportBase::_sfEnabled, osg::FBOViewportBase::_sfFboOn, osg::FBOViewportBase::_sfFrameBufferIndex, osg::FBOViewportBase::_sfGenCubemaps, osg::FBOViewportBase::_sfGenDepthmaps, osg::FBOViewportBase::_sfReadBuffer, osg::FBOViewportBase::_sfStencilBufferIndex, osg::FBOViewportBase::_sfStorageHeight, osg::FBOViewportBase::_sfStorageWidth, osg::MField< FieldTypeT, fieldNameSpace >::copyFromBin(), osg::SField< FieldTypeT, fieldNameSpace >::copyFromBin(), osg::ViewportBase::copyFromBin(), osg::FBOViewportBase::DepthBufferIndexFieldMask, osg::FBOViewportBase::DirtyFieldMask, osg::FBOViewportBase::EnabledFieldMask, osg::FBOViewportBase::ExcludeNodesFieldMask, osg::FBOViewportBase::FboOnFieldMask, osg::FBOViewportBase::FrameBufferIndexFieldMask, osg::FBOViewportBase::GenCubemapsFieldMask, osg::FBOViewportBase::GenDepthmapsFieldMask, osg::FieldBits::NoField, osg::FBOViewportBase::ReadBufferFieldMask, osg::FBOViewportBase::RenderNodesFieldMask, osg::FBOViewportBase::StencilBufferIndexFieldMask, osg::FBOViewportBase::StorageHeightFieldMask, osg::FBOViewportBase::StorageWidthFieldMask, and osg::FBOViewportBase::TexturesFieldMask.

00518 {
00519     Inherited::copyFromBin(pMem, whichField);
00520 
00521     if(FieldBits::NoField != (EnabledFieldMask & whichField))
00522     {
00523         _sfEnabled.copyFromBin(pMem);
00524     }
00525 
00526     if(FieldBits::NoField != (ExcludeNodesFieldMask & whichField))
00527     {
00528         _mfExcludeNodes.copyFromBin(pMem);
00529     }
00530 
00531     if(FieldBits::NoField != (RenderNodesFieldMask & whichField))
00532     {
00533         _mfRenderNodes.copyFromBin(pMem);
00534     }
00535 
00536     if(FieldBits::NoField != (TexturesFieldMask & whichField))
00537     {
00538         _mfTextures.copyFromBin(pMem);
00539     }
00540 
00541     if(FieldBits::NoField != (FboOnFieldMask & whichField))
00542     {
00543         _sfFboOn.copyFromBin(pMem);
00544     }
00545 
00546     if(FieldBits::NoField != (StorageWidthFieldMask & whichField))
00547     {
00548         _sfStorageWidth.copyFromBin(pMem);
00549     }
00550 
00551     if(FieldBits::NoField != (StorageHeightFieldMask & whichField))
00552     {
00553         _sfStorageHeight.copyFromBin(pMem);
00554     }
00555 
00556     if(FieldBits::NoField != (GenCubemapsFieldMask & whichField))
00557     {
00558         _sfGenCubemaps.copyFromBin(pMem);
00559     }
00560 
00561     if(FieldBits::NoField != (GenDepthmapsFieldMask & whichField))
00562     {
00563         _sfGenDepthmaps.copyFromBin(pMem);
00564     }
00565 
00566     if(FieldBits::NoField != (FrameBufferIndexFieldMask & whichField))
00567     {
00568         _sfFrameBufferIndex.copyFromBin(pMem);
00569     }
00570 
00571     if(FieldBits::NoField != (DepthBufferIndexFieldMask & whichField))
00572     {
00573         _sfDepthBufferIndex.copyFromBin(pMem);
00574     }
00575 
00576     if(FieldBits::NoField != (StencilBufferIndexFieldMask & whichField))
00577     {
00578         _sfStencilBufferIndex.copyFromBin(pMem);
00579     }
00580 
00581     if(FieldBits::NoField != (DirtyFieldMask & whichField))
00582     {
00583         _sfDirty.copyFromBin(pMem);
00584     }
00585 
00586     if(FieldBits::NoField != (ReadBufferFieldMask & whichField))
00587     {
00588         _sfReadBuffer.copyFromBin(pMem);
00589     }
00590 
00591 
00592 }

FBOViewportPtr osg::FBOViewportBase::create ( void   )  [inline, static, inherited]

Reimplemented from osg::ViewportBase.

Definition at line 72 of file OSGFBOViewportBase.inl.

References osg::AttachmentContainerPtr::dcast(), osg::FBOViewportBase::getClassType(), osg::NullFC, and osg::FBOViewportBase::shallowCopy().

00073 {
00074     FBOViewportPtr fc; 
00075 
00076     if(getClassType().getPrototype() != OSG::NullFC) 
00077     {
00078         fc = FBOViewportPtr::dcast(
00079             getClassType().getPrototype()-> shallowCopy()); 
00080     }
00081     
00082     return fc; 
00083 }

FBOViewportPtr osg::FBOViewportBase::createEmpty ( void   )  [inline, static, inherited]

Reimplemented from osg::ViewportBase.

Definition at line 87 of file OSGFBOViewportBase.inl.

References osg::FieldContainer::newPtr().

00088 { 
00089     FBOViewportPtr returnValue; 
00090     
00091     newPtr(returnValue); 
00092 
00093     return returnValue; 
00094 }

FieldContainerPtr osg::FBOViewportBase::shallowCopy ( void   )  const [virtual, inherited]

Reimplemented from osg::ViewportBase.

Definition at line 260 of file OSGFBOViewportBase.cpp.

References osg::FieldContainer::newPtr().

Referenced by osg::FBOViewportBase::create().

00261 { 
00262     FBOViewportPtr returnValue; 
00263 
00264     newPtr(returnValue, dynamic_cast<const FBOViewport *>(this)); 
00265 
00266     return returnValue; 
00267 }

SFUInt32 * osg::FBOViewportBase::getSFFrameBufferIndex ( void   )  [inline, protected, inherited]

Definition at line 164 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfFrameBufferIndex.

00165 {
00166     return &_sfFrameBufferIndex;
00167 }

SFUInt32 * osg::FBOViewportBase::getSFDepthBufferIndex ( void   )  [inline, protected, inherited]

Definition at line 171 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfDepthBufferIndex.

00172 {
00173     return &_sfDepthBufferIndex;
00174 }

SFUInt32 * osg::FBOViewportBase::getSFStencilBufferIndex ( void   )  [inline, protected, inherited]

Definition at line 178 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfStencilBufferIndex.

00179 {
00180     return &_sfStencilBufferIndex;
00181 }

UInt32 & osg::FBOViewportBase::getFrameBufferIndex ( void   )  [inline, protected, inherited]

Definition at line 326 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfFrameBufferIndex, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

Referenced by bind(), initialize(), setTarget(), and stop().

00327 {
00328     return _sfFrameBufferIndex.getValue();
00329 }

const UInt32 & osg::FBOViewportBase::getFrameBufferIndex ( void   )  const [inline, protected, inherited]

Definition at line 333 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfFrameBufferIndex, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00334 {
00335     return _sfFrameBufferIndex.getValue();
00336 }

UInt32 & osg::FBOViewportBase::getDepthBufferIndex ( void   )  [inline, protected, inherited]

Definition at line 347 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfDepthBufferIndex, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00348 {
00349     return _sfDepthBufferIndex.getValue();
00350 }

const UInt32 & osg::FBOViewportBase::getDepthBufferIndex ( void   )  const [inline, protected, inherited]

Definition at line 354 of file OSGFBOViewportBase.inl.

References osg::FBOViewportBase::_sfDepthBufferIndex, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00355 {
00356     return _sfDepthBufferIndex.getValue();
00357 }

UInt32 & osg::FBOViewportBase::getStencilBufferIndex ( void   )  [inline, protected, inherited]

const UInt32 & osg::FBOViewportBase::getStencilBufferIndex ( void   )  const [inline, protected, inherited]

void osg::FBOViewportBase::setFrameBufferIndex ( const UInt32 value  )  [inline, protected, inherited]

void osg::FBOViewportBase::setDepthBufferIndex ( const UInt32 value  )  [inline, protected, inherited]

void osg::FBOViewportBase::setStencilBufferIndex ( const UInt32 value  )  [inline, protected, inherited]

void osg::FBOViewportBase::executeSyncImpl ( FBOViewportBase pOther,
const BitVector whichField 
) [protected, inherited]

Definition at line 595 of file OSGFBOViewportBase.cpp.

References osg::FBOViewportBase::_mfExcludeNodes, osg::FBOViewportBase::_mfRenderNodes, osg::FBOViewportBase::_mfTextures, osg::FBOViewportBase::_sfDepthBufferIndex, osg::FBOViewportBase::_sfDirty, osg::FBOViewportBase::_sfEnabled, osg::FBOViewportBase::_sfFboOn, osg::FBOViewportBase::_sfFrameBufferIndex, osg::FBOViewportBase::_sfGenCubemaps, osg::FBOViewportBase::_sfGenDepthmaps, osg::FBOViewportBase::_sfReadBuffer, osg::FBOViewportBase::_sfStencilBufferIndex, osg::FBOViewportBase::_sfStorageHeight, osg::FBOViewportBase::_sfStorageWidth, osg::FBOViewportBase::DepthBufferIndexFieldMask, osg::FBOViewportBase::DirtyFieldMask, osg::FBOViewportBase::EnabledFieldMask, osg::FBOViewportBase::ExcludeNodesFieldMask, osg::ViewportBase::executeSyncImpl(), osg::FBOViewportBase::FboOnFieldMask, osg::FBOViewportBase::FrameBufferIndexFieldMask, osg::FBOViewportBase::GenCubemapsFieldMask, osg::FBOViewportBase::GenDepthmapsFieldMask, osg::FieldBits::NoField, osg::FBOViewportBase::ReadBufferFieldMask, osg::FBOViewportBase::RenderNodesFieldMask, osg::FBOViewportBase::StencilBufferIndexFieldMask, osg::FBOViewportBase::StorageHeightFieldMask, osg::FBOViewportBase::StorageWidthFieldMask, osg::MField< FieldTypeT, fieldNameSpace >::syncWith(), osg::SField< FieldTypeT, fieldNameSpace >::syncWith(), and osg::FBOViewportBase::TexturesFieldMask.

Referenced by osg::FBOViewportBase::executeSync().

00597 {
00598 
00599     Inherited::executeSyncImpl(pOther, whichField);
00600 
00601     if(FieldBits::NoField != (EnabledFieldMask & whichField))
00602         _sfEnabled.syncWith(pOther->_sfEnabled);
00603 
00604     if(FieldBits::NoField != (ExcludeNodesFieldMask & whichField))
00605         _mfExcludeNodes.syncWith(pOther->_mfExcludeNodes);
00606 
00607     if(FieldBits::NoField != (RenderNodesFieldMask & whichField))
00608         _mfRenderNodes.syncWith(pOther->_mfRenderNodes);
00609 
00610     if(FieldBits::NoField != (TexturesFieldMask & whichField))
00611         _mfTextures.syncWith(pOther->_mfTextures);
00612 
00613     if(FieldBits::NoField != (FboOnFieldMask & whichField))
00614         _sfFboOn.syncWith(pOther->_sfFboOn);
00615 
00616     if(FieldBits::NoField != (StorageWidthFieldMask & whichField))
00617         _sfStorageWidth.syncWith(pOther->_sfStorageWidth);
00618 
00619     if(FieldBits::NoField != (StorageHeightFieldMask & whichField))
00620         _sfStorageHeight.syncWith(pOther->_sfStorageHeight);
00621 
00622     if(FieldBits::NoField != (GenCubemapsFieldMask & whichField))
00623         _sfGenCubemaps.syncWith(pOther->_sfGenCubemaps);
00624 
00625     if(FieldBits::NoField != (GenDepthmapsFieldMask & whichField))
00626         _sfGenDepthmaps.syncWith(pOther->_sfGenDepthmaps);
00627 
00628     if(FieldBits::NoField != (FrameBufferIndexFieldMask & whichField))
00629         _sfFrameBufferIndex.syncWith(pOther->_sfFrameBufferIndex);
00630 
00631     if(FieldBits::NoField != (DepthBufferIndexFieldMask & whichField))
00632         _sfDepthBufferIndex.syncWith(pOther->_sfDepthBufferIndex);
00633 
00634     if(FieldBits::NoField != (StencilBufferIndexFieldMask & whichField))
00635         _sfStencilBufferIndex.syncWith(pOther->_sfStencilBufferIndex);
00636 
00637     if(FieldBits::NoField != (DirtyFieldMask & whichField))
00638         _sfDirty.syncWith(pOther->_sfDirty);
00639 
00640     if(FieldBits::NoField != (ReadBufferFieldMask & whichField))
00641         _sfReadBuffer.syncWith(pOther->_sfReadBuffer);
00642 
00643 
00644 }

void ViewportBase::executeSyncImpl ( ViewportBase pOther,
const BitVector whichField 
) [protected, inherited]

Definition at line 509 of file OSGViewportBase.cpp.

References osg::ViewportBase::_mfForegrounds, osg::ViewportBase::_sfBackground, osg::ViewportBase::_sfBottom, osg::ViewportBase::_sfCamera, osg::ViewportBase::_sfDrawTime, osg::ViewportBase::_sfLeft, osg::ViewportBase::_sfParent, osg::ViewportBase::_sfRight, osg::ViewportBase::_sfRoot, osg::ViewportBase::_sfTop, osg::ViewportBase::_sfTravMask, osg::ViewportBase::BackgroundFieldMask, osg::ViewportBase::BottomFieldMask, osg::ViewportBase::CameraFieldMask, osg::ViewportBase::DrawTimeFieldMask, osg::AttachmentContainer::executeSyncImpl(), osg::ViewportBase::ForegroundsFieldMask, osg::ViewportBase::LeftFieldMask, osg::FieldBits::NoField, osg::ViewportBase::ParentFieldMask, osg::ViewportBase::RightFieldMask, osg::ViewportBase::RootFieldMask, osg::MField< FieldTypeT, fieldNameSpace >::syncWith(), osg::SField< FieldTypeT, fieldNameSpace >::syncWith(), osg::ViewportBase::TopFieldMask, and osg::ViewportBase::TravMaskFieldMask.

Referenced by osg::ViewportBase::executeSync(), osg::StereoBufferViewportBase::executeSyncImpl(), osg::PassiveViewportBase::executeSyncImpl(), osg::FBOViewportBase::executeSyncImpl(), and osg::ColorBufferViewportBase::executeSyncImpl().

00511 {
00512 
00513     Inherited::executeSyncImpl(pOther, whichField);
00514 
00515     if(FieldBits::NoField != (LeftFieldMask & whichField))
00516         _sfLeft.syncWith(pOther->_sfLeft);
00517 
00518     if(FieldBits::NoField != (RightFieldMask & whichField))
00519         _sfRight.syncWith(pOther->_sfRight);
00520 
00521     if(FieldBits::NoField != (BottomFieldMask & whichField))
00522         _sfBottom.syncWith(pOther->_sfBottom);
00523 
00524     if(FieldBits::NoField != (TopFieldMask & whichField))
00525         _sfTop.syncWith(pOther->_sfTop);
00526 
00527     if(FieldBits::NoField != (ParentFieldMask & whichField))
00528         _sfParent.syncWith(pOther->_sfParent);
00529 
00530     if(FieldBits::NoField != (CameraFieldMask & whichField))
00531         _sfCamera.syncWith(pOther->_sfCamera);
00532 
00533     if(FieldBits::NoField != (RootFieldMask & whichField))
00534         _sfRoot.syncWith(pOther->_sfRoot);
00535 
00536     if(FieldBits::NoField != (BackgroundFieldMask & whichField))
00537         _sfBackground.syncWith(pOther->_sfBackground);
00538 
00539     if(FieldBits::NoField != (ForegroundsFieldMask & whichField))
00540         _mfForegrounds.syncWith(pOther->_mfForegrounds);
00541 
00542     if(FieldBits::NoField != (TravMaskFieldMask & whichField))
00543         _sfTravMask.syncWith(pOther->_sfTravMask);
00544 
00545     if(FieldBits::NoField != (DrawTimeFieldMask & whichField))
00546         _sfDrawTime.syncWith(pOther->_sfDrawTime);
00547 
00548 
00549 }

void AttachmentContainer::executeSyncImpl ( AttachmentContainer pOther,
const BitVector whichField 
) [protected, inherited]

void osg::FieldContainer::executeSyncImpl ( FieldContainer pOther,
const BitVector whichField 
) [inline, protected, inherited]

void osg::FBOViewportBase::executeSync ( FieldContainer other,
const BitVector whichField 
) [protected, virtual, inherited]

Reimplemented from osg::ViewportBase.

Definition at line 276 of file OSGFBOViewportBase.cpp.

References osg::FBOViewportBase::executeSyncImpl().

00278 {
00279     this->executeSyncImpl((FBOViewportBase *) &other, whichField);
00280 }

void osg::Viewport::setSize ( Real32  left,
Real32  bottom,
Real32  right,
Real32  top 
) [inline, inherited]

Set all of the size-related fields of the viewport.

Does not call begin/endEdit internally!

Definition at line 66 of file OSGViewport.inl.

References osg::ViewportBase::_sfBottom, osg::ViewportBase::_sfLeft, osg::ViewportBase::_sfRight, osg::ViewportBase::_sfTop, and osg::SField< FieldTypeT, fieldNameSpace >::setValue().

Referenced by render().

00068 {
00069     _sfLeft.setValue( left );
00070     _sfRight.setValue( right );
00071     _sfBottom.setValue( bottom );
00072     _sfTop.setValue( top );
00073 }

Int32 Viewport::getPixelLeft ( void   )  const [inherited]

Calculate the positon of the left border of the viewport. Needs a valid _sfParent value.

Definition at line 138 of file OSGViewport.cpp.

References osg::ViewportBase::getLeft(), osg::ViewportBase::getParent(), osg::NullFC, and SWARNING.

Referenced by osg::Viewport::activateSize(), osg::Camera::calcViewRay(), osg::TextureGrabBackground::clear(), osg::DVRIsoShader::deactivate_ColorMatrixShading(), osg::TextureGrabForeground::draw(), osg::GrabForeground::draw(), osg::Viewport::getPixelWidth(), and osg::Viewport::isFullWindow().

00139 {
00140     if(getLeft() > 1)
00141         return Int32(getLeft());
00142 
00143     if(getParent() == NullFC)
00144     {
00145         SWARNING << "Viewport::getPixelLeft: viewport has no parent window!" << std::endl;
00146         return 0;
00147     }
00148 
00149     return Int32(getParent()->getWidth() * getLeft());
00150 }

Int32 Viewport::getPixelRight ( void   )  const [inherited]

Calculate the positon of the right border of the viewport. Needs a valid _sfParent value.

Definition at line 155 of file OSGViewport.cpp.

References osg::ViewportBase::getParent(), osg::ViewportBase::getRight(), osg::NullFC, and SWARNING.

Referenced by osg::Viewport::activateSize(), osg::DVRIsoShader::deactivate_ColorMatrixShading(), osg::Viewport::getPixelWidth(), and osg::Viewport::isFullWindow().

00156 {
00157     // >1: pixel
00158     if(getRight() > 1)
00159         return Int32(getRight());
00160 
00161     if(getParent() == NullFC)
00162     {
00163         SWARNING << "Viewport::getPixelRight: viewport has no parent window!" << std::endl;
00164         return 0;
00165     }
00166 
00167     // <=1: partial screen, use 1 less to not overlap other windows
00168     return Int32(getParent()->getWidth() * getRight() - 1);
00169 }

Int32 Viewport::getPixelBottom ( void   )  const [inherited]

Calculate the positon of the bottom border of the viewport. Needs a valid _sfParent value.

Definition at line 174 of file OSGViewport.cpp.

References osg::ViewportBase::getBottom(), osg::ViewportBase::getParent(), osg::NullFC, and SWARNING.

Referenced by osg::Viewport::activateSize(), osg::TextureGrabBackground::clear(), osg::DVRIsoShader::deactivate_ColorMatrixShading(), osg::TextureGrabForeground::draw(), osg::GrabForeground::draw(), osg::Viewport::getPixelHeight(), and osg::Viewport::isFullWindow().

00175 {
00176     if(getBottom() > 1)
00177         return Int32(getBottom());
00178 
00179     if(getParent() == NullFC)
00180     {
00181         SWARNING << "Viewport::getPixelBottom: viewport has no parent window!" << std::endl;
00182         return 0;
00183     }
00184 
00185     return Int32(getParent()->getHeight() * getBottom());
00186 }

Int32 Viewport::getPixelTop ( void   )  const [inherited]

Calculate the positon of the top border of the viewport. Needs a valid _sfParent value.

Definition at line 191 of file OSGViewport.cpp.

References osg::ViewportBase::getParent(), osg::ViewportBase::getTop(), osg::NullFC, and SWARNING.

Referenced by osg::Viewport::activateSize(), osg::Camera::calcViewRay(), osg::DVRIsoShader::deactivate_ColorMatrixShading(), osg::Viewport::getPixelHeight(), and osg::Viewport::isFullWindow().

00192 {
00193     // >1: pixel
00194     if(getTop() > 1)
00195         return Int32(getTop());
00196 
00197     if(getParent() == NullFC)
00198     {
00199         SWARNING << "Viewport::getPixelTop: viewport has no parent window!" << std::endl;
00200         return 0;
00201     }
00202 
00203     // <=1: partial screen, use 1 less to not overlap other windows
00204     return Int32(getParent()->getHeight() * getTop() - 1);
00205 }

Int32 osg::Viewport::getPixelWidth ( void   )  const [inline, inherited]

Calculate the width of the viewport in Pixel.

Definition at line 48 of file OSGViewport.inl.

References osg::Viewport::getPixelLeft(), and osg::Viewport::getPixelRight().

Referenced by osg::TextureTransformChunk::activate(), osg::TexGenChunk::activate(), osg::ScreenGroup::calcMatrix(), osg::GraphicStatisticsForeground::calcPosAndSize(), osg::Camera::calcViewRay(), osg::TextureTransformChunk::changeFrom(), osg::TexGenChunk::changeFrom(), osg::TextureGrabBackground::clear(), osg::SkyBackground::clear(), osg::PolygonBackground::clear(), osg::ImageBackground::clear(), osg::GradientBackground::clear(), osg::TextureGrabForeground::draw(), osg::SimpleStatisticsForeground::draw(), osg::PolygonForeground::draw(), osg::ImageForeground::draw(), osg::GraphicStatisticsForeground::draw(), osg::GrabForeground::draw(), osg::DisplayFilterForeground::draw(), osg::GraphicStatisticsForeground::drawBar(), osg::GraphicStatisticsForeground::drawChart(), osg::GraphicStatisticsForeground::drawLineChart(), osg::GraphicStatisticsForeground::drawText(), osg::DVRIsoShader::getCoveredScreenRect(), osg::Camera::getFrustum(), osg::Camera::getWorldToScreen(), osg::RenderAction::isSmallFeature(), osg::Camera::setup(), osg::Camera::setupProjection(), osg::RenderAction::start(), osg::RenderAction::stop(), osg::SHLChunk::updateCameraOrientation(), osg::SHLChunk::updateCameraPosition(), osg::SHLChunk::updateInvViewMatrix(), and osg::SHLChunk::updateViewMatrix().

00049 {
00050     return getPixelRight() - getPixelLeft() + 1;
00051 }

Int32 osg::Viewport::getPixelHeight ( void   )  const [inline, inherited]

Calculate the height of the viewport in Pixel.

Definition at line 55 of file OSGViewport.inl.

References osg::Viewport::getPixelBottom(), and osg::Viewport::getPixelTop().

Referenced by osg::TextureTransformChunk::activate(), osg::TexGenChunk::activate(), osg::ScreenGroup::calcMatrix(), osg::GraphicStatisticsForeground::calcPosAndSize(), osg::Camera::calcViewRay(), osg::TextureTransformChunk::changeFrom(), osg::TexGenChunk::changeFrom(), osg::TextureGrabBackground::clear(), osg::SkyBackground::clear(), osg::PolygonBackground::clear(), osg::ImageBackground::clear(), osg::GradientBackground::clear(), osg::TextureGrabForeground::draw(), osg::SimpleStatisticsForeground::draw(), osg::PolygonForeground::draw(), osg::ImageForeground::draw(), osg::GraphicStatisticsForeground::draw(), osg::GrabForeground::draw(), osg::DisplayFilterForeground::draw(), osg::GraphicStatisticsForeground::drawBar(), osg::GraphicStatisticsForeground::drawChart(), osg::GraphicStatisticsForeground::drawLineChart(), osg::GraphicStatisticsForeground::drawText(), osg::DVRIsoShader::getCoveredScreenRect(), osg::Camera::getFrustum(), osg::Camera::getWorldToScreen(), osg::RenderAction::isSmallFeature(), osg::Camera::setup(), osg::Camera::setupProjection(), osg::RenderAction::start(), osg::RenderAction::stop(), osg::SHLChunk::updateCameraOrientation(), osg::SHLChunk::updateCameraPosition(), osg::SHLChunk::updateInvViewMatrix(), and osg::SHLChunk::updateViewMatrix().

00056 {
00057     return getPixelTop() - getPixelBottom() + 1;
00058 }

bool Viewport::isFullWindow ( void   )  const [inherited]

Checks if the viewport fills the whole window. Needs a valid _sfParent value.

Definition at line 210 of file OSGViewport.cpp.

References osg::ViewportBase::getParent(), osg::Viewport::getPixelBottom(), osg::Viewport::getPixelLeft(), osg::Viewport::getPixelRight(), osg::Viewport::getPixelTop(), osg::NullFC, and SWARNING.

Referenced by osg::Viewport::activateSize().

00211 {
00212     if(getParent() == NullFC)
00213     {
00214         SWARNING << "Viewport::isFullWindow: viewport has no parent window!" << std::endl;
00215         return false;
00216     }
00217 
00218     return  getPixelBottom() == 0 &&
00219             getPixelLeft()   == 0 &&
00220             getPixelTop()    == getParent()->getHeight() - 1 &&
00221             getPixelRight()  == getParent()->getWidth() - 1;
00222 }

void Viewport::clearForegrounds ( void   )  [inherited]

Definition at line 224 of file OSGViewport.cpp.

References osg::ViewportBase::_mfForegrounds, osg::MField< FieldTypeT, fieldNameSpace >::clear(), osg::MField< FieldTypeT, fieldNameSpace >::size(), and osg::subRefCP().

00225 {
00226     for(UInt32 i = 0; i < _mfForegrounds.size(); ++i)
00227     {
00228         subRefCP(_mfForegrounds[i]);
00229     }
00230 
00231     _mfForegrounds.clear();
00232 
00233 }

void Viewport::addForeground ( ForegroundPtr  pForeground  )  [inherited]

Definition at line 235 of file OSGViewport.cpp.

References osg::ViewportBase::_mfForegrounds, osg::addRefCP(), and osg::MField< FieldTypeT, fieldNameSpace >::push_back().

00236 {
00237     addRefCP(pForeground);
00238     
00239     _mfForegrounds.push_back(pForeground);
00240 }

void Viewport::activateSize ( void   )  [virtual, inherited]

Reimplemented in osg::ColorBufferViewport, osg::PassiveViewport, and osg::StereoBufferViewport.

Definition at line 246 of file OSGViewport.cpp.

References osg::Viewport::getPixelBottom(), osg::Viewport::getPixelLeft(), osg::Viewport::getPixelRight(), osg::Viewport::getPixelTop(), and osg::Viewport::isFullWindow().

Referenced by osg::Viewport::activate(), osg::StereoBufferViewport::activateSize(), osg::PassiveViewport::activateSize(), and osg::ColorBufferViewport::activateSize().

00247 {
00248     GLint pl=getPixelLeft();
00249     GLint pr=getPixelRight();
00250     GLint pb=getPixelBottom();
00251     GLint pt=getPixelTop();
00252     GLint pw=pr-pl+1;
00253     GLint ph=pt-pb+1;
00254 
00255     glViewport(pl, pb, pw, ph);
00256 
00257     if(!isFullWindow())
00258     {
00259         glScissor(pl, pb, pw, ph);
00260         glEnable(GL_SCISSOR_TEST);
00261     }
00262     else
00263         glDisable(GL_SCISSOR_TEST);
00264         
00265 }

void Viewport::activate ( void   )  [virtual, inherited]

void Viewport::deactivate ( void   )  [virtual, inherited]

void Viewport::draw ( DrawAction action  )  [virtual, inherited]

Draw the viewport. Restrict the OpenGL rendering to the given part of the window, clear it, draw it using the given DrawAction and add the Foregrounds.

The _sfCamera, _sfBackground and _sfRoot Fields need to be valid, otherwise drawing will fail.

Dev:

Activates scissoring only if the viewport doesn't fill the wholw window, as it significantly slows down some OpenGL implementations.

Reimplemented in osg::ColorBufferViewport, osg::PassiveViewport, and osg::StereoBufferViewport.

Definition at line 291 of file OSGViewport.cpp.

References osg::Viewport::activate(), osg::Action::apply(), osg::Viewport::deactivate(), osg::ViewportBase::getBackground(), osg::ViewportBase::getCamera(), osg::getCPtr(), osg::ViewportBase::getForegrounds(), osg::ViewportBase::getRoot(), osg::ViewportBase::getTravMask(), osg::NullFC, osg::DrawActionBase::setBackground(), osg::DrawActionBase::setCamera(), osg::Action::setTravMask(), osg::DrawActionBase::setViewport(), osg::MField< FieldTypeT, fieldNameSpace >::size(), and SWARNING.

Referenced by osg::StereoBufferViewport::draw(), osg::PassiveViewport::draw(), and osg::ColorBufferViewport::draw().

00292 {
00293     if(getCamera() == NullFC)
00294     {
00295         SWARNING << "Viewport::draw: no camera!" << std::endl;
00296         return;
00297     }
00298     if(getBackground() == NullFC)
00299     {
00300         SWARNING << "Viewport::draw: no Background!" << std::endl;
00301         return;
00302     }
00303     if(getRoot() == NullFC)
00304     {
00305         SWARNING << "Viewport::draw: no root!" << std::endl;
00306         return;
00307     }
00308 
00309     activate();
00310 
00311     action->setViewport  (this);
00312     action->setCamera    (getCamera    ().getCPtr());
00313     action->setBackground(getBackground().getCPtr());
00314     action->setTravMask  (getTravMask()            );
00315     
00316     getCamera    ()->setup(action, *this);
00317     getBackground()->clear(action,  this);
00318 
00319     action->apply(getRoot());
00320 
00321     for(UInt16 i=0; i < getForegrounds().size(); i++)
00322         getForegrounds(i)->draw(action, this);
00323 
00324     deactivate();
00325 }

SFReal32 * osg::ViewportBase::getSFLeft ( void   )  [inline, inherited]

Definition at line 101 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfLeft.

00102 {
00103     return &_sfLeft;
00104 }

SFReal32 * osg::ViewportBase::getSFRight ( void   )  [inline, inherited]

Definition at line 108 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfRight.

00109 {
00110     return &_sfRight;
00111 }

SFReal32 * osg::ViewportBase::getSFBottom ( void   )  [inline, inherited]

Definition at line 115 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfBottom.

00116 {
00117     return &_sfBottom;
00118 }

SFReal32 * osg::ViewportBase::getSFTop ( void   )  [inline, inherited]

Definition at line 122 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfTop.

00123 {
00124     return &_sfTop;
00125 }

SFWindowPtr * osg::ViewportBase::getSFParent ( void   )  [inline, inherited]

Definition at line 129 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfParent.

00130 {
00131     return &_sfParent;
00132 }

SFCameraPtr * osg::ViewportBase::getSFCamera ( void   )  [inline, inherited]

Definition at line 136 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfCamera.

00137 {
00138     return &_sfCamera;
00139 }

SFNodePtr * osg::ViewportBase::getSFRoot ( void   )  [inline, inherited]

Definition at line 143 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfRoot.

00144 {
00145     return &_sfRoot;
00146 }

SFBackgroundPtr * osg::ViewportBase::getSFBackground ( void   )  [inline, inherited]

Definition at line 150 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfBackground.

00151 {
00152     return &_sfBackground;
00153 }

MFForegroundPtr * osg::ViewportBase::getMFForegrounds ( void   )  [inline, inherited]

Definition at line 157 of file OSGViewportBase.inl.

References osg::ViewportBase::_mfForegrounds.

00158 {
00159     return &_mfForegrounds;
00160 }

SFUInt32 * osg::ViewportBase::getSFTravMask ( void   )  [inline, inherited]

Definition at line 164 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfTravMask.

00165 {
00166     return &_sfTravMask;
00167 }

SFReal32 * osg::ViewportBase::getSFDrawTime ( void   )  [inline, inherited]

Definition at line 171 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfDrawTime.

00172 {
00173     return &_sfDrawTime;
00174 }

Real32 & osg::ViewportBase::getLeft ( void   )  [inline, inherited]

const Real32 & osg::ViewportBase::getLeft ( void   )  const [inline, inherited]

Definition at line 186 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfLeft, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00187 {
00188     return _sfLeft.getValue();
00189 }

Real32 & osg::ViewportBase::getRight ( void   )  [inline, inherited]

const Real32 & osg::ViewportBase::getRight ( void   )  const [inline, inherited]

Definition at line 207 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfRight, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00208 {
00209     return _sfRight.getValue();
00210 }

Real32 & osg::ViewportBase::getBottom ( void   )  [inline, inherited]

const Real32 & osg::ViewportBase::getBottom ( void   )  const [inline, inherited]

Definition at line 228 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfBottom, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00229 {
00230     return _sfBottom.getValue();
00231 }

Real32 & osg::ViewportBase::getTop ( void   )  [inline, inherited]

Definition at line 242 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfTop, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

Referenced by osg::DisplayFilterForeground::draw(), and osg::Viewport::getPixelTop().

00243 {
00244     return _sfTop.getValue();
00245 }

const Real32 & osg::ViewportBase::getTop ( void   )  const [inline, inherited]

Definition at line 249 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfTop, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00250 {
00251     return _sfTop.getValue();
00252 }

WindowPtr & osg::ViewportBase::getParent ( void   )  [inline, inherited]

const WindowPtr & osg::ViewportBase::getParent ( void   )  const [inline, inherited]

Definition at line 270 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfParent, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00271 {
00272     return _sfParent.getValue();
00273 }

CameraPtr & osg::ViewportBase::getCamera ( void   )  [inline, inherited]

Definition at line 284 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfCamera, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

Referenced by osg::Viewport::draw(), osg::Viewport::render(), and render().

00285 {
00286     return _sfCamera.getValue();
00287 }

const CameraPtr & osg::ViewportBase::getCamera ( void   )  const [inline, inherited]

Definition at line 291 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfCamera, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00292 {
00293     return _sfCamera.getValue();
00294 }

NodePtr & osg::ViewportBase::getRoot ( void   )  [inline, inherited]

const NodePtr & osg::ViewportBase::getRoot ( void   )  const [inline, inherited]

Definition at line 312 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfRoot, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00313 {
00314     return _sfRoot.getValue();
00315 }

BackgroundPtr & osg::ViewportBase::getBackground ( void   )  [inline, inherited]

Definition at line 326 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfBackground, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

Referenced by osg::Viewport::draw(), osg::Viewport::render(), and render().

00327 {
00328     return _sfBackground.getValue();
00329 }

const BackgroundPtr & osg::ViewportBase::getBackground ( void   )  const [inline, inherited]

Definition at line 333 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfBackground, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00334 {
00335     return _sfBackground.getValue();
00336 }

UInt32 & osg::ViewportBase::getTravMask ( void   )  [inline, inherited]

Definition at line 347 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfTravMask, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

Referenced by osg::Viewport::draw(), osg::Viewport::render(), and render().

00348 {
00349     return _sfTravMask.getValue();
00350 }

const UInt32 & osg::ViewportBase::getTravMask ( void   )  const [inline, inherited]

Definition at line 354 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfTravMask, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00355 {
00356     return _sfTravMask.getValue();
00357 }

Real32 & osg::ViewportBase::getDrawTime ( void   )  [inline, inherited]

Definition at line 368 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfDrawTime, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00369 {
00370     return _sfDrawTime.getValue();
00371 }

const Real32 & osg::ViewportBase::getDrawTime ( void   )  const [inline, inherited]

Definition at line 375 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfDrawTime, and osg::SField< FieldTypeT, fieldNameSpace >::getValue().

00376 {
00377     return _sfDrawTime.getValue();
00378 }

ForegroundPtr & osg::ViewportBase::getForegrounds ( const UInt32  index  )  [inline, inherited]

Definition at line 390 of file OSGViewportBase.inl.

References osg::ViewportBase::_mfForegrounds.

00391 {
00392     return _mfForegrounds[index];
00393 }

MFForegroundPtr & osg::ViewportBase::getForegrounds ( void   )  [inline, inherited]

Definition at line 397 of file OSGViewportBase.inl.

References osg::ViewportBase::_mfForegrounds.

Referenced by osg::Viewport::draw(), osg::Viewport::render(), and render().

00398 {
00399     return _mfForegrounds;
00400 }

const MFForegroundPtr & osg::ViewportBase::getForegrounds ( void   )  const [inline, inherited]

Definition at line 404 of file OSGViewportBase.inl.

References osg::ViewportBase::_mfForegrounds.

00405 {
00406     return _mfForegrounds;
00407 }

void osg::ViewportBase::setLeft ( const Real32 value  )  [inline, inherited]

Definition at line 193 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfLeft, and osg::SField< FieldTypeT, fieldNameSpace >::setValue().

Referenced by osg::PassiveViewport::activateSize().

00194 {
00195     _sfLeft.setValue(value);
00196 }

void osg::ViewportBase::setRight ( const Real32 value  )  [inline, inherited]

Definition at line 214 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfRight, and osg::SField< FieldTypeT, fieldNameSpace >::setValue().

Referenced by osg::PassiveViewport::activateSize().

00215 {
00216     _sfRight.setValue(value);
00217 }

void osg::ViewportBase::setBottom ( const Real32 value  )  [inline, inherited]

void osg::ViewportBase::setTop ( const Real32 value  )  [inline, inherited]

Definition at line 256 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfTop, and osg::SField< FieldTypeT, fieldNameSpace >::setValue().

Referenced by osg::PassiveViewport::activateSize().

00257 {
00258     _sfTop.setValue(value);
00259 }

void osg::ViewportBase::setParent ( const WindowPtr value  )  [inline, inherited]

Definition at line 277 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfParent, and osg::SField< FieldTypeT, fieldNameSpace >::setValue().

00278 {
00279     _sfParent.setValue(value);
00280 }

void osg::ViewportBase::setCamera ( const CameraPtr value  )  [inline, inherited]

Definition at line 298 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfCamera, and osg::SField< FieldTypeT, fieldNameSpace >::setValue().

00299 {
00300     _sfCamera.setValue(value);
00301 }

void osg::ViewportBase::setRoot ( const NodePtr value  )  [inline, inherited]

Definition at line 319 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfRoot, and osg::SField< FieldTypeT, fieldNameSpace >::setValue().

00320 {
00321     _sfRoot.setValue(value);
00322 }

void osg::ViewportBase::setBackground ( const BackgroundPtr value  )  [inline, inherited]

Definition at line 340 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfBackground, and osg::SField< FieldTypeT, fieldNameSpace >::setValue().

00341 {
00342     _sfBackground.setValue(value);
00343 }

void osg::ViewportBase::setTravMask ( const UInt32 value  )  [inline, inherited]

Definition at line 361 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfTravMask, and osg::SField< FieldTypeT, fieldNameSpace >::setValue().

00362 {
00363     _sfTravMask.setValue(value);
00364 }

void osg::ViewportBase::setDrawTime ( const Real32 value  )  [inline, inherited]

Definition at line 382 of file OSGViewportBase.inl.

References osg::ViewportBase::_sfDrawTime, and osg::SField< FieldTypeT, fieldNameSpace >::setValue().

Referenced by osg::RenderAction::stop().

00383 {
00384     _sfDrawTime.setValue(value);
00385 }

void AttachmentContainer::addAttachment ( const AttachmentPtr fieldContainerP,
UInt16  binding = 0 
) [inherited]

Definition at line 84 of file OSGAttachmentContainer.cpp.

References osg::addRefCP(), osg::beginEditCP(), osg::endEditCP(), osg::NullFC, and osg::subRefCP().

Referenced by osg::AttachmentContainer::AttachmentContainer(), osg::Node::onCreate(), and osg::Image::setAttachmentField().

00086 {
00087     UInt32 key;
00088 
00089     if(fieldContainerP == NullFC)
00090         return;
00091 
00092     key = (UInt32 (fieldContainerP->getGroupId()) << 16) | binding;
00093 
00094     addRefCP(fieldContainerP);
00095 
00096     beginEditCP(fieldContainerP, Attachment::ParentsFieldMask);
00097     {
00098         fieldContainerP->addParent(getPtr());
00099     }
00100     endEditCP  (fieldContainerP, Attachment::ParentsFieldMask);
00101 
00102     AttachmentMap::iterator fcI = _attachmentMap.getValue().find(key);
00103 
00104     if(fcI != _attachmentMap.getValue().end())
00105     {
00106         beginEditCP((*fcI).second, Attachment::ParentsFieldMask);
00107         {
00108             (*fcI).second->subParent(getPtr());
00109         }
00110         endEditCP  ((*fcI).second, Attachment::ParentsFieldMask);
00111 
00112         subRefCP((*fcI).second);
00113 
00114         (*fcI).second = fieldContainerP;
00115     }
00116     else
00117     {
00118         _attachmentMap.getValue()[key] = fieldContainerP;
00119     }
00120 }

void AttachmentContainer::subAttachment ( const AttachmentPtr fieldContainerP,
UInt16  binding = 0 
) [inherited]

Definition at line 122 of file OSGAttachmentContainer.cpp.

References osg::AttachmentContainer::_attachmentMap, osg::beginEditCP(), osg::endEditCP(), osg::AttachmentContainer::getPtr(), osg::SField< FieldTypeT, fieldNameSpace >::getValue(), osg::NullFC, osg::Attachment::ParentsFieldMask, and osg::subRefCP().

00124 {
00125     UInt32 key;
00126 
00127     AttachmentMap::iterator fcI;
00128 
00129     if(fieldContainerP == NullFC)
00130         return;
00131 
00132     key = (UInt32(fieldContainerP->getGroupId()) << 16) | binding;
00133 
00134     fcI = _attachmentMap.getValue().find(key);
00135 
00136     if(fcI != _attachmentMap.getValue().end())
00137     {
00138         beginEditCP(fieldContainerP, Attachment::ParentsFieldMask);
00139         {
00140             (*fcI).second->subParent(getPtr());
00141         }
00142         endEditCP  (fieldContainerP, Attachment::ParentsFieldMask);
00143 
00144         subRefCP((*fcI).second);
00145 
00146         _attachmentMap.getValue().erase(fcI);
00147     }
00148 }

AttachmentPtr AttachmentContainer::findAttachment ( UInt32  groupId,
UInt16  binding = 0 
) [inherited]

Definition at line 150 of file OSGAttachmentContainer.cpp.

References osg::AttachmentContainer::_attachmentMap, osg::SField< FieldTypeT, fieldNameSpace >::getValue(), and osg::NullFC.

Referenced by osg::Image::findAttachmentField(), and osg::Image::setAttachmentField().

00152 {
00153     UInt32 key = (UInt32(groupId) << 16) | binding;
00154 
00155     AttachmentMap::iterator fcI = _attachmentMap.getValue().find(key);
00156 
00157     if(fcI == _attachmentMap.getValue().end())
00158     {
00159         return NullFC;
00160     }
00161     else
00162     {
00163         return (*fcI).second;
00164     }
00165 }

AttachmentPtr osg::AttachmentContainer::findAttachment ( const FieldContainerType type,
UInt16  binding = 0 
) [inline, inherited]

Definition at line 57 of file OSGAttachmentContainerImpl.inl.

00060 {
00061     return findAttachment(type.getGroupId(), binding);
00062 }

SFAttachmentMap * AttachmentContainer::getSFAttachments ( void   )  [inherited]

Field Access

Definition at line 170 of file OSGAttachmentContainer.cpp.

References osg::AttachmentContainer::_attachmentMap.

00171 {
00172     return &_attachmentMap;
00173 }

AttachmentContainerPtr AttachmentContainer::getPtr ( void   )  [protected, inherited]

UInt16 osg::FieldContainer::getClassGroupId ( void   )  [inline, static, inherited]

Definition at line 71 of file OSGFieldContainerImpl.inl.

References osg::FieldContainer::_type, and osg::FieldContainerType::getGroupId().

00072 {
00073     return _type.getGroupId();
00074 }

UInt32 osg::FieldContainer::getTypeId ( void   )  const [inline, inherited]

Definition at line 77 of file OSGFieldContainerImpl.inl.

References osg::TypeBase::getId(), and osg::FieldContainer::getType().

Referenced by osg::TextureChunk::changeFrom(), and osg::CubeTextureChunk::changeFrom().

00078 {
00079     return getType().getId();
00080 }

UInt16 osg::FieldContainer::getGroupId ( void   )  const [inline, inherited]

const Char8 * osg::FieldContainer::getTypeName ( void   )  const [inline, inherited]

Definition at line 89 of file OSGFieldContainerImpl.inl.

References osg::TypeBase::getCName(), and osg::FieldContainer::getType().

00090 {
00091     return getType().getCName();
00092 }

Field * osg::FieldContainer::getField ( UInt32  fieldId  )  [inline, inherited]

Generic Field Access

Definition at line 95 of file OSGFieldContainerImpl.inl.

References osg::FieldDescription::getField(), osg::FieldContainerType::getFieldDescription(), and osg::FieldContainer::getType().

Referenced by osg::QFCItem::expand(), osg::VRMLShapeDesc::getFieldAndDesc(), osg::QFieldViewBase::getFieldPtr(), osg::QFieldEditorBase::getFieldPtr(), osg::getParentsField(), and osg::QFCItem::setup().

00096 {
00097     const FieldDescription *desc = getType().getFieldDescription(fieldId);
00098 
00099     return desc ? desc->getField(*this) : NULL;
00100 }

Field * osg::FieldContainer::getField ( const Char8 fieldName  )  [inline, inherited]

Generic Field Access

Definition at line 103 of file OSGFieldContainerImpl.inl.

References osg::FieldContainerType::findFieldDescription(), osg::FieldDescription::getField(), and osg::FieldContainer::getType().

00104 {
00105     const FieldDescription *desc =getType().findFieldDescription(fieldName);
00106 
00107     return desc ? desc->getField(*this) : NULL;
00108 }

template<class ObjectPtrT>
void osg::FieldContainer::newPtr ( ObjectPtrT &  result,
const typename ObjectPtrT::StoredObjectType *  prototypeP 
) [inline, static, protected, inherited]

Definition at line 138 of file OSGFieldContainerImpl.inl.

References osg::ChangeList::addCreated(), osg::PThreadBase::getAspect(), osg::PThreadBase::getCurrentChangeList(), osg::ThreadManager::getNumAspects(), osg::FieldContainerFactory::registerFieldContainer(), and osg::FieldContainerFactory::the().

Referenced by osg::XWindowBase::createEmpty(), osg::WIN32WindowBase::createEmpty(), osg::ViewportBase::createEmpty(), osg::VertexProgramChunkBase::createEmpty(), osg::TwoSidedLightingChunkBase::createEmpty(), osg::TransformChunkBase::createEmpty(), osg::TransformBase::createEmpty(), osg::TileCameraDecoratorBase::createEmpty(), osg::TextureTransformChunkBase::createEmpty(), osg::TextureGrabForegroundBase::createEmpty(), osg::TextureGrabBackgroundBase::createEmpty(), osg::TextureChunkBase::createEmpty(), osg::TextureBackgroundBase::createEmpty(), osg::TexGenChunkBase::createEmpty(), osg::SwitchMaterialBase::createEmpty(), osg::SwitchBase::createEmpty(), osg::SurfaceBase::createEmpty(), osg::StringAttributeMapBase::createEmpty(), osg::StereoBufferViewportBase::createEmpty(), osg::StencilChunkBase::createEmpty(), osg::StateSortingGroupBase::createEmpty(), osg::StateBase::createEmpty(), osg::SpotLightBase::createEmpty(), osg::SortFirstWindowBase::createEmpty(), osg::SolidBackgroundBase::createEmpty(), osg::SlicesBase::createEmpty(), osg::SkyBackgroundBase::createEmpty(), osg::SimpleTexturedMaterialBase::createEmpty(), osg::SimpleStatisticsForegroundBase::createEmpty(), osg::SimpleMaterialBase::createEmpty(), osg::SHLParameterChunkBase::createEmpty(), osg::SHLChunkBase::createEmpty(), osg::ShearedStereoCameraDecoratorBase::createEmpty(), osg::ShaderParameterVec4fBase::createEmpty(), osg::ShaderParameterVec3fBase::createEmpty(), osg::ShaderParameterVec2fBase::createEmpty(), osg::ShaderParameterStringBase::createEmpty(), osg::ShaderParameterRealBase::createEmpty(), osg::ShaderParameterMVec4fBase::createEmpty(), osg::ShaderParameterMVec3fBase::createEmpty(), osg::ShaderParameterMVec2fBase::createEmpty(), osg::ShaderParameterMRealBase::createEmpty(), osg::ShaderParameterMMatrixBase::createEmpty(), osg::ShaderParameterMIntBase::createEmpty(), osg::ShaderParameterMatrixBase::createEmpty(), osg::ShaderParameterIntBase::createEmpty(), osg::ShaderParameterBoolBase::createEmpty(), osg::ScreenGroupBase::createEmpty(), osg::SClipPlaneChunkBase::createEmpty(), osg::ResolutionDisplayFilterBase::createEmpty(), osg::RenderOptionsBase::createEmpty(), osg::RegisterCombinersChunkBase::createEmpty(), osg::QTWindowBase::createEmpty(), osg::ProxyGroupBase::createEmpty(), osg::ProjectionCameraDecoratorBase::createEmpty(), osg::PolygonForegroundBase::createEmpty(), osg::PolygonChunkBase::createEmpty(), osg::PolygonBackgroundBase::createEmpty(), osg::PointLightBase::createEmpty(), osg::PointChunkBase::createEmpty(), osg::PhongMaterialBase::createEmpty(), osg::PerspectiveCameraBase::createEmpty(), osg::PassiveWindowBase::createEmpty(), osg::PassiveViewportBase::createEmpty(), osg::PassiveBackgroundBase::createEmpty(), osg::ParticlesBase::createEmpty(), osg::OrthographicCameraBase::createEmpty(), osg::OffCenterPerspectiveCameraBase::createEmpty(), osg::MultiPassMaterialBase::createEmpty(), osg::MultiDisplayWindowBase::createEmpty(), osg::MatrixCameraDecoratorBase::createEmpty(), osg::MatrixCameraBase::createEmpty(), osg::MaterialPoolBase::createEmpty(), osg::MaterialGroupBase::createEmpty(), osg::MaterialChunkBase::createEmpty(), osg::LogicOpChunkBase::createEmpty(), osg::LineChunkBase::createEmpty(), osg::LightModelChunkBase::createEmpty(), osg::LightEnvBase::createEmpty(), osg::LightChunkBase::createEmpty(), osg::InverseTransformBase::createEmpty(), osg::InlineBase::createEmpty(), osg::ImageForegroundBase::createEmpty(), osg::ImageBase::createEmpty(), osg::ImageBackgroundBase::createEmpty(), osg::GroupBase::createEmpty(), osg::GraphicStatisticsForegroundBase::createEmpty(), osg::GradientBackgroundBase::createEmpty(), osg::GrabForegroundBase::createEmpty(), osg::GLUTWindowBase::createEmpty(), osg::GeometryBase::createEmpty(), osg::FresnelMaterialBase::createEmpty(), osg::FragmentProgramChunkBase::createEmpty(), osg::FileGrabForegroundBase::createEmpty(), osg::FCPtrAttributeMapBase::createEmpty(), osg::FBOViewportBase::createEmpty(), osg::FatBorderChunkBase::createEmpty(), osg::DVRVolumeTextureBase::createEmpty(), osg::DVRVolumeBase::createEmpty(), osg::DVRSimpleShaderBase::createEmpty(), osg::DVRSimpleLUTShaderBase::createEmpty(), osg::DVRMtexLUTShaderBase::createEmpty(), osg::DVRLookupTableBase::createEmpty(), osg::DVRIsoSurfaceBase::createEmpty(), osg::DVRIsoShaderBase::createEmpty(), osg::DVRGeometryBase::createEmpty(), osg::DVRClipObjectsBase::createEmpty(), osg::DVRClipGeometryBase::createEmpty(), osg::DVRAppearanceBase::createEmpty(), osg::DistortionDisplayFilterBase::createEmpty(), osg::DistanceLODBase::createEmpty(), osg::DisplayFilterForegroundBase::createEmpty(), osg::DisplayCalibrationBase::createEmpty(), osg::DirectionalLightBase::createEmpty(), osg::DepthClearBackgroundBase::createEmpty(), osg::DepthChunkBase::createEmpty(), osg::CubeTextureChunkBase::createEmpty(), osg::ComponentTransformBase::createEmpty(), osg::ColorMaskChunkBase::createEmpty(), osg::ColorDisplayFilterBase::createEmpty(), osg::ColorBufferViewportBase::createEmpty(), osg::ClusterWindowBase::createEmpty(), osg::ClipPlaneChunkBase::createEmpty(), osg::ClipPlaneBase::createEmpty(), osg::ChunkMaterialBase::createEmpty(), osg::BlendChunkBase::createEmpty(), osg::BillboardBase::createEmpty(), osg::XWindowBase::shallowCopy(), osg::WIN32WindowBase::shallowCopy(), osg::ViewportBase::shallowCopy(), osg::VertexProgramChunkBase::shallowCopy(), osg::TwoSidedLightingChunkBase::shallowCopy(), osg::TransformChunkBase::shallowCopy(), osg::TransformBase::shallowCopy(), osg::TileCameraDecoratorBase::shallowCopy(), osg::TextureTransformChunkBase::shallowCopy(), osg::TextureGrabForegroundBase::shallowCopy(), osg::TextureGrabBackgroundBase::shallowCopy(), osg::TextureChunkBase::shallowCopy(), osg::TextureBackgroundBase::shallowCopy(), osg::TexGenChunkBase::shallowCopy(), osg::SwitchMaterialBase::shallowCopy(), osg::SwitchBase::shallowCopy(), osg::SurfaceBase::shallowCopy(), osg::StringAttributeMapBase::shallowCopy(), osg::StereoBufferViewportBase::shallowCopy(), osg::StencilChunkBase::shallowCopy(), osg::StateSortingGroupBase::shallowCopy(), osg::StateBase::shallowCopy(), osg::SpotLightBase::shallowCopy(), osg::SortFirstWindowBase::shallowCopy(), osg::SolidBackgroundBase::shallowCopy(), osg::SlicesBase::shallowCopy(), osg::SkyBackgroundBase::shallowCopy(), osg::SimpleTexturedMaterialBase::shallowCopy(), osg::SimpleStatisticsForegroundBase::shallowCopy(), osg::SimpleMaterialBase::shallowCopy(), osg::SHLParameterChunkBase::shallowCopy(), osg::SHLChunkBase::shallowCopy(), osg::ShearedStereoCameraDecoratorBase::shallowCopy(), osg::ShaderParameterVec4fBase::shallowCopy(), osg::ShaderParameterVec3fBase::shallowCopy(), osg::ShaderParameterVec2fBase::shallowCopy(), osg::ShaderParameterStringBase::shallowCopy(), osg::ShaderParameterRealBase::shallowCopy(), osg::ShaderParameterMVec4fBase::shallowCopy(), osg::ShaderParameterMVec3fBase::shallowCopy(), osg::ShaderParameterMVec2fBase::shallowCopy(), osg::ShaderParameterMRealBase::shallowCopy(), osg::ShaderParameterMMatrixBase::shallowCopy(), osg::ShaderParameterMIntBase::shallowCopy(), osg::ShaderParameterMatrixBase::shallowCopy(), osg::ShaderParameterIntBase::shallowCopy(), osg::ShaderParameterBoolBase::shallowCopy(), osg::ScreenGroupBase::shallowCopy(), osg::SClipPlaneChunkBase::shallowCopy(), osg::ResolutionDisplayFilterBase::shallowCopy(), osg::RenderOptionsBase::shallowCopy(), osg::RegisterCombinersChunkBase::shallowCopy(), osg::QTWindowBase::shallowCopy(), osg::ProxyGroupBase::shallowCopy(), osg::ProjectionCameraDecoratorBase::shallowCopy(), osg::PolygonForegroundBase::shallowCopy(), osg::PolygonChunkBase::shallowCopy(), osg::PolygonBackgroundBase::shallowCopy(), osg::PointLightBase::shallowCopy(), osg::PointChunkBase::shallowCopy(), osg::PhongMaterialBase::shallowCopy(), osg::PerspectiveCameraBase::shallowCopy(), osg::PassiveWindowBase::shallowCopy(), osg::PassiveViewportBase::shallowCopy(), osg::PassiveBackgroundBase::shallowCopy(), osg::ParticlesBase::shallowCopy(), osg::OrthographicCameraBase::shallowCopy(), osg::OffCenterPerspectiveCameraBase::shallowCopy(), osg::MultiPassMaterialBase::shallowCopy(), osg::MultiDisplayWindowBase::shallowCopy(), osg::MatrixCameraDecoratorBase::shallowCopy(), osg::MatrixCameraBase::shallowCopy(), osg::MaterialPoolBase::shallowCopy(), osg::MaterialGroupBase::shallowCopy(), osg::MaterialChunkBase::shallowCopy(), osg::LogicOpChunkBase::shallowCopy(), osg::LineChunkBase::shallowCopy(), osg::LightModelChunkBase::shallowCopy(), osg::LightEnvBase::shallowCopy(), osg::LightChunkBase::shallowCopy(), osg::InverseTransformBase::shallowCopy(), osg::InlineBase::shallowCopy(), osg::ImageForegroundBase::shallowCopy(), osg::ImageBase::shallowCopy(), osg::ImageBackgroundBase::shallowCopy(), osg::GroupBase::shallowCopy(), osg::GraphicStatisticsForegroundBase::shallowCopy(), osg::GradientBackgroundBase::shallowCopy(), osg::GrabForegroundBase::shallowCopy(), osg::GLUTWindowBase::shallowCopy(), osg::GeometryBase::shallowCopy(), osg::FresnelMaterialBase::shallowCopy(), osg::FragmentProgramChunkBase::shallowCopy(), osg::FileGrabForegroundBase::shallowCopy(), osg::FCPtrAttributeMapBase::shallowCopy(), osg::FBOViewportBase::shallowCopy(), osg::FatBorderChunkBase::shallowCopy(), osg::DVRVolumeTextureBase::shallowCopy(), osg::DVRVolumeBase::shallowCopy(), osg::DVRSimpleShaderBase::shallowCopy(), osg::DVRSimpleLUTShaderBase::shallowCopy(), osg::DVRMtexLUTShaderBase::shallowCopy(), osg::DVRLookupTableBase::shallowCopy(), osg::DVRIsoSurfaceBase::shallowCopy(), osg::DVRIsoShaderBase::shallowCopy(), osg::DVRGeometryBase::shallowCopy(), osg::DVRClipObjectsBase::shallowCopy(), osg::DVRClipGeometryBase::shallowCopy(), osg::DVRAppearanceBase::shallowCopy(), osg::DistortionDisplayFilterBase::shallowCopy(), osg::DistanceLODBase::shallowCopy(), osg::DisplayFilterForegroundBase::shallowCopy(), osg::DisplayCalibrationBase::shallowCopy(), osg::DirectionalLightBase::shallowCopy(), osg::DepthClearBackgroundBase::shallowCopy(), osg::DepthChunkBase::shallowCopy(), osg::CubeTextureChunkBase::shallowCopy(), osg::ComponentTransformBase::shallowCopy(), osg::ColorMaskChunkBase::shallowCopy(), osg::ColorDisplayFilterBase::shallowCopy(), osg::ColorBufferViewportBase::shallowCopy(), osg::ClusterWindowBase::shallowCopy(), osg::ClipPlaneChunkBase::shallowCopy(), osg::ClipPlaneBase::shallowCopy(), osg::ChunkMaterialBase::shallowCopy(), osg::BlendChunkBase::shallowCopy(), and osg::BillboardBase::shallowCopy().

00141 {
00142     typedef typename ObjectPtrT::StoredObjectType ObjectType;
00143     
00144     UInt8 *pTmp;
00145     
00146     result._containerSize = sizeof(ObjectType);
00147     
00148     pTmp        = 
00149         static_cast<UInt8 *>(operator new(
00150             sizeof(Int32)      + // ReferenceCount
00151             sizeof(UInt32)     + // ContainerId
00152             sizeof(ObjectType) * ThreadManager::getNumAspects()));
00153     
00154     *(reinterpret_cast<Int32 *>(pTmp)) = 0;
00155     
00156     pTmp += sizeof(Int32);
00157     
00158     result._storeP = (pTmp + sizeof(UInt32));
00159 
00160 #ifdef OSG_DEBUG_FCPTR
00161     result._typedStoreP = reinterpret_cast<FieldContainer *>(result._storeP);
00162 #endif
00163 
00164     *(reinterpret_cast<UInt32 *>(pTmp)) = 
00165         FieldContainerFactory::the()->registerFieldContainer(result);
00166     
00167     Thread::getCurrentChangeList()->addCreated(
00168         *(reinterpret_cast<UInt32 *>(pTmp)));
00169     
00170     pTmp += sizeof(UInt32);
00171     
00172     ObjectType *aObject = reinterpret_cast<ObjectType *>(pTmp);
00173 
00174     for(UInt32 i = 0; i < ThreadManager::getNumAspects(); i++)
00175     {
00176         pTmp = 
00177             reinterpret_cast<UInt8 *>(new (pTmp) ObjectType(*prototypeP));
00178         
00179         pTmp += sizeof(ObjectType);
00180     }
00181     
00182     result->onCreate(prototypeP);
00183 
00184     for(UInt32 i = 0; i < ThreadManager::getNumAspects(); i++)
00185     {
00186         aObject[i].onCreateAspect(aObject, prototypeP);
00187     }
00188 
00189 #if defined(OSG_GV_BETA) && defined(OSG_DBG_MEM)
00190 
00191     fprintf(stderr, "GV_MEM_FC_DBG : (%u) cc (%p|%u)\n", 
00192             Thread::getAspect(),
00193             result._storeP,
00194 //            ObjectType::getClassType().getCName(),
00195             ObjectType::getClassType().getId());
00196 #endif
00197 
00198 #ifdef OSG_DEBUG_TYPED_FCPTR
00199     result.updateTypedStore();
00200 #endif
00201 }

template<class ObjectPtrT>
void osg::FieldContainer::newPtr ( ObjectPtrT &  result  )  [inline, static, protected, inherited]

Definition at line 204 of file OSGFieldContainerImpl.inl.

References osg::ChangeList::addCreated(), osg::PThreadBase::getAspect(), osg::PThreadBase::getCurrentChangeList(), osg::ThreadManager::getNumAspects(), osg::FieldContainerFactory::registerFieldContainer(), and osg::FieldContainerFactory::the().

00205 {
00206     typedef typename ObjectPtrT::StoredObjectType ObjectType;
00207     
00208     UInt8 *pTmp;
00209     
00210     result._containerSize = sizeof(ObjectType);
00211     
00212     pTmp        =             
00213         static_cast<UInt8 *>(operator new(
00214             sizeof(Int32)      + // ReferenceCount
00215             sizeof(UInt32)     + // ContainerId
00216             sizeof(ObjectType) * ThreadManager::getNumAspects()));
00217     
00218     *(reinterpret_cast<Int32 *>(pTmp)) = 0;
00219     
00220     pTmp  += sizeof(Int32);
00221     
00222     result._storeP = (pTmp + sizeof(UInt32));
00223     
00224 #ifdef OSG_DEBUG_FCPTR
00225     result._typedStoreP = reinterpret_cast<FieldContainer *>(result._storeP);
00226 #endif
00227 
00228     *(reinterpret_cast<UInt32 *>(pTmp)) = 
00229         FieldContainerFactory::the()->registerFieldContainer(result);
00230     
00231     Thread::getCurrentChangeList()->addCreated(
00232         *(reinterpret_cast<UInt32 *>(pTmp)));
00233     
00234     pTmp += sizeof(UInt32);
00235     
00236     ObjectType *aObject = reinterpret_cast<ObjectType *>(pTmp);
00237 
00238     for(UInt32 i = 0; i < ThreadManager::getNumAspects(); i++)
00239     {
00240         pTmp = reinterpret_cast<UInt8 *>(new (pTmp) ObjectType());
00241         
00242         pTmp += sizeof(ObjectType);
00243     }
00244     
00245     result->onCreate();
00246     
00247     for(UInt32 i = 0; i < ThreadManager::getNumAspects(); i++)
00248     {
00249         aObject[i].onCreateAspect(aObject);
00250     }
00251 
00252 #if defined(OSG_GV_BETA) && defined(OSG_DBG_MEM)
00253     fprintf(stderr, "GV_MEM_FC_DBG : (%u) c (%p|%u)\n", 
00254             Thread::getAspect(),
00255             result._storeP,
00256 //            ObjectType::getClassType().getCName(),
00257             ObjectType::getClassType().getId());
00258 #endif
00259     
00260 #ifdef OSG_DEBUG_TYPED_FCPTR
00261     result.updateTypedStore();
00262 #endif
00263 }

template<class FieldTypeT>
void osg::FieldContainer::beginEditX ( const BitVector whichField,
FieldTypeT &  field 
) [inline, protected, inherited]

Definition at line 285 of file OSGFieldContainerImpl.inl.

00286 {
00287 //    fieldR.beginEdit();
00288 }

template<class FieldTypeT>
void osg::FieldContainer::endEditX ( const BitVector whichField,
FieldTypeT &  field 
) [inline, protected, inherited]

Definition at line 291 of file OSGFieldContainerImpl.inl.

References osg::endEditCP().

00292 {
00293     FieldContainerPtr tmpPtr(this);
00294     endEditCP(tmpPtr, whichField);
00295 }

void osg::FieldContainer::onCreate ( const FieldContainer source = NULL  )  [inline, protected, inherited]

Definition at line 318 of file OSGFieldContainerImpl.inl.

Referenced by osg::ShaderParameterChunk::onCreate().

00319 {
00320 }

void osg::FieldContainer::onCreateAspect ( const FieldContainer aspect0,
const FieldContainer source = NULL 
) [inline, protected, inherited]

Definition at line 323 of file OSGFieldContainerImpl.inl.

00325 {
00326 }


Friends And Related Function Documentation

friend class FieldContainer [friend]

Reimplemented from osg::FBOViewportBase.

Definition at line 166 of file OSGFBOViewport.h.

friend class FBOViewportBase [friend]

Definition at line 167 of file OSGFBOViewport.h.


Member Data Documentation

Definition at line 173 of file OSGFBOViewport.h.

Referenced by extensionCheck(), and FBOViewport().

Definition at line 174 of file OSGFBOViewport.h.

Referenced by FBOViewport().

UInt32 FBOViewport::_funcDrawBuffers = Window::invalidFunctionID [static, private]

Definition at line 176 of file OSGFBOViewport.h.

Referenced by FBOViewport(), and render().

UInt32 FBOViewport::_funcBindFramebuffer = Window::invalidFunctionID [static, private]

Definition at line 177 of file OSGFBOViewport.h.

Referenced by bind(), FBOViewport(), initialize(), and stop().

UInt32 FBOViewport::_funcBindRenderbuffer = Window::invalidFunctionID [static, private]

Definition at line 178 of file OSGFBOViewport.h.

Referenced by FBOViewport(), and initialize().

UInt32 FBOViewport::_funcCheckFramebufferStatus = Window::invalidFunctionID [static, private]

Definition at line 179 of file OSGFBOViewport.h.

Referenced by checkFrameBufferStatus(), FBOViewport(), and initialize().

UInt32 FBOViewport::_funcDeleteFramebuffers = Window::invalidFunctionID [static, private]

Definition at line 180 of file OSGFBOViewport.h.

Referenced by FBOViewport().

UInt32 FBOViewport::_funcDeleteRenderbuffers = Window::invalidFunctionID [static, private]

Definition at line 181 of file OSGFBOViewport.h.

Referenced by FBOViewport().

UInt32 FBOViewport::_funcFramebufferRenderbuffer = Window::invalidFunctionID [static, private]

Definition at line 182 of file OSGFBOViewport.h.

Referenced by FBOViewport(), and initialize().

UInt32 FBOViewport::_funcFramebufferTexture1D = Window::invalidFunctionID [static, private]

Definition at line 183 of file OSGFBOViewport.h.

Referenced by FBOViewport(), and setTarget().

UInt32 FBOViewport::_funcFramebufferTexture2D = Window::invalidFunctionID [static, private]

Definition at line 184 of file OSGFBOViewport.h.

Referenced by FBOViewport(), and setTarget().

UInt32 FBOViewport::_funcFramebufferTexture3D = Window::invalidFunctionID [static, private]

Definition at line 185 of file OSGFBOViewport.h.

Referenced by FBOViewport(), and setTarget().

UInt32 FBOViewport::_funcGenFramebuffers = Window::invalidFunctionID [static, private]

Definition at line 186 of file OSGFBOViewport.h.

Referenced by FBOViewport(), and initialize().

UInt32 FBOViewport::_funcGenRenderbuffers = Window::invalidFunctionID [static, private]

Definition at line 187 of file OSGFBOViewport.h.

Referenced by FBOViewport(), and initialize().

UInt32 FBOViewport::_funcGenerateMipmap = Window::invalidFunctionID [static, private]

Definition at line 188 of file OSGFBOViewport.h.

Referenced by FBOViewport().

UInt32 FBOViewport::_funcGetFramebufferAttachmentParameteriv = Window::invalidFunctionID [static, private]

Definition at line 189 of file OSGFBOViewport.h.

Referenced by FBOViewport().

UInt32 FBOViewport::_funcGetRenderbufferParameteriv = Window::invalidFunctionID [static, private]

Definition at line 190 of file OSGFBOViewport.h.

Referenced by FBOViewport().

UInt32 FBOViewport::_funcIsFramebuffer = Window::invalidFunctionID [static, private]

Definition at line 191 of file OSGFBOViewport.h.

Referenced by FBOViewport().

UInt32 FBOViewport::_funcIsRenderbuffer = Window::invalidFunctionID [static, private]

Definition at line 192 of file OSGFBOViewport.h.

Referenced by FBOViewport().

UInt32 FBOViewport::_funcRenderbufferStorage = Window::invalidFunctionID [static, private]

Definition at line 193 of file OSGFBOViewport.h.

Referenced by FBOViewport(), and initialize().

Definition at line 195 of file OSGFBOViewport.h.

Referenced by render(), and setRenderParamsCB().

Initial value:

 
    (Inherited::MTInfluenceMask) | 
    (static_cast<BitVector>(0x0) << Inherited::NextFieldId)

Reimplemented from osg::ViewportBase.

Definition at line 140 of file OSGFBOViewportBase.h.

bool osg::FBOViewportBase::_sfEnabled [protected, inherited]

bool osg::FBOViewportBase::_sfFboOn [protected, inherited]

bool osg::FBOViewportBase::_sfGenCubemaps [protected, inherited]

bool osg::FBOViewportBase::_sfGenDepthmaps [protected, inherited]

bool osg::FBOViewportBase::_sfDirty [protected, inherited]

bool osg::FBOViewportBase::_sfReadBuffer [protected, inherited]

const osg::BitVector ViewportBase::LeftFieldMask [static, inherited]

const osg::BitVector ViewportBase::RightFieldMask [static, inherited]

const osg::BitVector ViewportBase::BottomFieldMask [static, inherited]

const osg::BitVector ViewportBase::TopFieldMask [static, inherited]

const osg::BitVector ViewportBase::ParentFieldMask [static, inherited]

const osg::BitVector ViewportBase::CameraFieldMask [static, inherited]

const osg::BitVector ViewportBase::RootFieldMask [static, inherited]

Real32 ViewportBase::_sfLeft [protected, inherited]

The left edge of the viewport. Values between 0 and 1 are relative to the size of the Window, values > 1 are absolute pixel coordinates, value == -1 means the left border. All other values are illegal.

Definition at line 248 of file OSGViewportBase.h.

Referenced by osg::ViewportBase::copyFromBin(), osg::ViewportBase::copyToBin(), osg::ViewportBase::executeSyncImpl(), osg::ViewportBase::getBinSize(), osg::ViewportBase::getLeft(), osg::ViewportBase::getSFLeft(), osg::ViewportBase::setLeft(), and osg::Viewport::setSize().

Real32 ViewportBase::_sfRight [protected, inherited]

The right edge of the viewport. Values between 0 and 1 are relative to the size of the Window, values > 1 are absolute pixel coordinates, value == -1 means the right border. All other values are illegal.

Definition at line 249 of file OSGViewportBase.h.

Referenced by osg::ViewportBase::copyFromBin(), osg::ViewportBase::copyToBin(), osg::ViewportBase::executeSyncImpl(), osg::ViewportBase::getBinSize(), osg::ViewportBase::getRight(), osg::ViewportBase::getSFRight(), osg::ViewportBase::setRight(), and osg::Viewport::setSize().

Real32 ViewportBase::_sfBottom [protected, inherited]

The bottom edge of the viewport. Values between 0 and 1 are relative to the size of the Window, values > 1 are absolute pixel coordinates, value == -1 means the bottom border. All other values are illegal.

Definition at line 250 of file OSGViewportBase.h.

Referenced by osg::ViewportBase::copyFromBin(), osg::ViewportBase::copyToBin(), osg::ViewportBase::executeSyncImpl(), osg::ViewportBase::getBinSize(), osg::ViewportBase::getBottom(), osg::ViewportBase::getSFBottom(), osg::ViewportBase::setBottom(), and osg::Viewport::setSize().

Real32 ViewportBase::_sfTop [protected, inherited]

The top edge of the viewport. Values between 0 and 1 are relative to the size of the Window, values > 1 are absolute pixel coordinates, value == -1 means the top border. All other values are illegal.

Definition at line 251 of file OSGViewportBase.h.

Referenced by osg::ViewportBase::copyFromBin(), osg::ViewportBase::copyToBin(), osg::ViewportBase::executeSyncImpl(), osg::ViewportBase::getBinSize(), osg::ViewportBase::getSFTop(), osg::ViewportBase::getTop(), osg::Viewport::setSize(), and osg::ViewportBase::setTop().

WindowPtr ViewportBase::_sfParent [protected, inherited]

CameraPtr ViewportBase::_sfCamera [protected, inherited]

NodePtr ViewportBase::_sfRoot [protected, inherited]

UInt32 ViewportBase::_sfTravMask [protected, inherited]

Real32 ViewportBase::_sfDrawTime [protected, inherited]

const BitVector osg::FieldContainer::NextFieldMask [static, inherited]

Initial value:

 
                    (TypeTraits<BitVector>::One << NextFieldId)

Definition at line 75 of file OSGFieldContainerImpl.h.

const bool osg::FieldContainer::isNodeCore = false [static, inherited]

Reimplemented in osg::NodeCore.

Definition at line 181 of file OSGFieldContainerImpl.h.

UInt32 osg::FieldContainer::_shares [protected, inherited]

Definition at line 199 of file OSGFieldContainerImpl.h.


The documentation for this class was generated from the following files:

Generated on Mon Mar 17 12:16:30 2008 for OpenSG by  doxygen 1.5.5