1 /*---------------------------------------------------------------------------*\
5 * Copyright (C) 2000-2013 by the OpenSG Forum *
9 * contact: dirk@opensg.org, gerrit.voss@vossg.org, carsten_neumann@gmx.net *
11 \*---------------------------------------------------------------------------*/
12 /*---------------------------------------------------------------------------*\
15 * This library is free software; you can redistribute it and/or modify it *
16 * under the terms of the GNU Library General Public License as published *
17 * by the Free Software Foundation, version 2. *
19 * This library is distributed in the hope that it will be useful, but *
20 * WITHOUT ANY WARRANTY; without even the implied warranty of *
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
22 * Library General Public License for more details. *
24 * You should have received a copy of the GNU Library General Public *
25 * License along with this library; if not, write to the Free Software *
26 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
28 \*---------------------------------------------------------------------------*/
29 /*---------------------------------------------------------------------------*\
37 \*---------------------------------------------------------------------------*/
39 /*****************************************************************************\
40 *****************************************************************************
42 ** This file is automatically generated. **
44 ** Any changes made to this file WILL be lost when it is **
45 ** regenerated, which can become necessary at any time. **
47 ** Do not change this file, changes should be done in the derived **
48 ** class FrameBufferObject!
50 *****************************************************************************
51 \*****************************************************************************/
57 #pragma warning(disable: 4355) // turn off 'this' : used in base member initializer list warning
58 #pragma warning(disable: 4290) // disable exception specification warning
61 #include "OSGConfig.h"
65 #include "OSGFrameBufferAttachment.h" // ColorAttachments Class
67 #include "OSGFrameBufferObjectBase.h"
68 #include "OSGFrameBufferObject.h"
70 #include <boost/bind.hpp>
74 /***************************************************************************\
76 \***************************************************************************/
78 /*! \class OSG::FrameBufferObject
79 Framebuffer object. Encapsulates FBOs as defined by the EXT_framebuffer_object
83 /***************************************************************************\
84 * Field Documentation *
85 \***************************************************************************/
87 /*! \var GLenum FrameBufferObjectBase::_sfGLId
88 The OpenGL texture id for this frame buffer object.
91 /*! \var GLenum FrameBufferObjectBase::_sfMultiSampleGLId
92 The OpenGL texture id for this frame buffer object.
95 /*! \var FrameBufferAttachment * FrameBufferObjectBase::_mfColorAttachments
96 GL_COLOR_ATTACHMENTX slots, position defines X.
97 This defines the target buffers for color attachments.
100 /*! \var GLenum FrameBufferObjectBase::_mfDrawBuffers
101 The target draw buffers. ex: GL_COLOR_ATTACHMENT0.
102 These are used to call DrawBuffers to tell OpenGL what targets
106 /*! \var FrameBufferAttachment * FrameBufferObjectBase::_sfDepthAttachment
107 GL_DEPTH_ATTACHMENT slot. The target for depth values.
110 /*! \var FrameBufferAttachment * FrameBufferObjectBase::_sfStencilAttachment
111 GL_STENCIL_ATTACHMENT slot.
114 /*! \var UInt16 FrameBufferObjectBase::_sfWidth
118 /*! \var UInt16 FrameBufferObjectBase::_sfHeight
122 /*! \var bool FrameBufferObjectBase::_sfPostProcessOnDeactivate
123 Enable to check and generate mipmap level or copy the texture buffer
124 result back to the image
127 /*! \var bool FrameBufferObjectBase::_sfEnableMultiSample
131 /*! \var UInt32 FrameBufferObjectBase::_sfColorSamples
135 /*! \var UInt32 FrameBufferObjectBase::_sfCoverageSamples
139 /*! \var bool FrameBufferObjectBase::_sfFixedSampleLocation
143 /*! \var FrameBufferAttachment * FrameBufferObjectBase::_mfMsaaColorAttachments
144 GL_COLOR_ATTACHMENTX slots, position defines X.
145 This defines the target buffers for color attachments.
148 /*! \var FrameBufferAttachment * FrameBufferObjectBase::_sfMsaaDepthAttachment
149 GL_DEPTH_ATTACHMENT slot. The target for depth values.
152 /*! \var FrameBufferAttachment * FrameBufferObjectBase::_sfMsaaStencilAttachment
153 GL_STENCIL_ATTACHMENT slot.
157 /***************************************************************************\
158 * FieldType/FieldTrait Instantiation *
159 \***************************************************************************/
161 #if !defined(OSG_DO_DOC) || defined(OSG_DOC_DEV)
162 PointerType FieldTraits
<FrameBufferObject
*, nsOSG
>::_type(
163 "FrameBufferObjectPtr",
164 "AttachmentContainerPtr",
165 FrameBufferObject::getClassType(),
169 OSG_FIELDTRAITS_GETTYPE_NS(FrameBufferObject
*, nsOSG
)
171 OSG_EXPORT_PTR_SFIELD_FULL(PointerSField
,
175 OSG_EXPORT_PTR_MFIELD_FULL(PointerMField
,
179 /***************************************************************************\
180 * Field Description *
181 \***************************************************************************/
183 void FrameBufferObjectBase::classDescInserter(TypeObject
&oType
)
185 FieldDescriptionBase
*pDesc
= NULL
;
188 pDesc
= new SFGLenum::Description(
189 SFGLenum::getClassType(),
191 "The OpenGL texture id for this frame buffer object.\n",
192 GLIdFieldId
, GLIdFieldMask
,
194 (Field::FClusterLocal
),
195 static_cast<FieldEditMethodSig
>(&FrameBufferObject::editHandleGLId
),
196 static_cast<FieldGetMethodSig
>(&FrameBufferObject::getHandleGLId
));
198 oType
.addInitialDesc(pDesc
);
200 pDesc
= new SFGLenum::Description(
201 SFGLenum::getClassType(),
203 "The OpenGL texture id for this frame buffer object.\n",
204 MultiSampleGLIdFieldId
, MultiSampleGLIdFieldMask
,
206 (Field::FClusterLocal
),
207 static_cast<FieldEditMethodSig
>(&FrameBufferObject::editHandleMultiSampleGLId
),
208 static_cast<FieldGetMethodSig
>(&FrameBufferObject::getHandleMultiSampleGLId
));
210 oType
.addInitialDesc(pDesc
);
212 pDesc
= new MFUnrecFrameBufferAttachmentPtr::Description(
213 MFUnrecFrameBufferAttachmentPtr::getClassType(),
215 "GL_COLOR_ATTACHMENTX slots, position defines X. \n"
216 "This defines the target buffers for color attachments.\n",
217 ColorAttachmentsFieldId
, ColorAttachmentsFieldMask
,
219 (Field::MFDefaultFlags
| Field::FStdAccess
),
220 static_cast<FieldEditMethodSig
>(&FrameBufferObject::editHandleColorAttachments
),
221 static_cast<FieldGetMethodSig
>(&FrameBufferObject::getHandleColorAttachments
));
223 oType
.addInitialDesc(pDesc
);
225 pDesc
= new MFGLenum::Description(
226 MFGLenum::getClassType(),
228 "The target draw buffers. ex: GL_COLOR_ATTACHMENT0.\n"
229 "These are used to call DrawBuffers to tell OpenGL what targets\n"
231 DrawBuffersFieldId
, DrawBuffersFieldMask
,
233 (Field::MFDefaultFlags
| Field::FStdAccess
),
234 static_cast<FieldEditMethodSig
>(&FrameBufferObject::editHandleDrawBuffers
),
235 static_cast<FieldGetMethodSig
>(&FrameBufferObject::getHandleDrawBuffers
));
237 oType
.addInitialDesc(pDesc
);
239 pDesc
= new SFUnrecFrameBufferAttachmentPtr::Description(
240 SFUnrecFrameBufferAttachmentPtr::getClassType(),
242 "GL_DEPTH_ATTACHMENT slot. The target for depth values.\n",
243 DepthAttachmentFieldId
, DepthAttachmentFieldMask
,
245 (Field::SFDefaultFlags
| Field::FStdAccess
),
246 static_cast<FieldEditMethodSig
>(&FrameBufferObject::editHandleDepthAttachment
),
247 static_cast<FieldGetMethodSig
>(&FrameBufferObject::getHandleDepthAttachment
));
249 oType
.addInitialDesc(pDesc
);
251 pDesc
= new SFUnrecFrameBufferAttachmentPtr::Description(
252 SFUnrecFrameBufferAttachmentPtr::getClassType(),
254 "GL_STENCIL_ATTACHMENT slot.\n",
255 StencilAttachmentFieldId
, StencilAttachmentFieldMask
,
257 (Field::SFDefaultFlags
| Field::FStdAccess
),
258 static_cast<FieldEditMethodSig
>(&FrameBufferObject::editHandleStencilAttachment
),
259 static_cast<FieldGetMethodSig
>(&FrameBufferObject::getHandleStencilAttachment
));
261 oType
.addInitialDesc(pDesc
);
263 pDesc
= new SFUInt16::Description(
264 SFUInt16::getClassType(),
267 WidthFieldId
, WidthFieldMask
,
269 (Field::SFDefaultFlags
| Field::FStdAccess
),
270 static_cast<FieldEditMethodSig
>(&FrameBufferObject::editHandleWidth
),
271 static_cast<FieldGetMethodSig
>(&FrameBufferObject::getHandleWidth
));
273 oType
.addInitialDesc(pDesc
);
275 pDesc
= new SFUInt16::Description(
276 SFUInt16::getClassType(),
279 HeightFieldId
, HeightFieldMask
,
281 (Field::SFDefaultFlags
| Field::FStdAccess
),
282 static_cast<FieldEditMethodSig
>(&FrameBufferObject::editHandleHeight
),
283 static_cast<FieldGetMethodSig
>(&FrameBufferObject::getHandleHeight
));
285 oType
.addInitialDesc(pDesc
);
287 pDesc
= new SFBool::Description(
288 SFBool::getClassType(),
289 "postProcessOnDeactivate",
290 "Enable to check and generate mipmap level or copy the texture buffer\n"
291 "result back to the image\n",
292 PostProcessOnDeactivateFieldId
, PostProcessOnDeactivateFieldMask
,
294 (Field::SFDefaultFlags
| Field::FStdAccess
),
295 static_cast<FieldEditMethodSig
>(&FrameBufferObject::editHandlePostProcessOnDeactivate
),
296 static_cast<FieldGetMethodSig
>(&FrameBufferObject::getHandlePostProcessOnDeactivate
));
298 oType
.addInitialDesc(pDesc
);
300 pDesc
= new SFBool::Description(
301 SFBool::getClassType(),
304 EnableMultiSampleFieldId
, EnableMultiSampleFieldMask
,
306 (Field::SFDefaultFlags
| Field::FStdAccess
),
307 static_cast<FieldEditMethodSig
>(&FrameBufferObject::editHandleEnableMultiSample
),
308 static_cast<FieldGetMethodSig
>(&FrameBufferObject::getHandleEnableMultiSample
));
310 oType
.addInitialDesc(pDesc
);
312 pDesc
= new SFUInt32::Description(
313 SFUInt32::getClassType(),
316 ColorSamplesFieldId
, ColorSamplesFieldMask
,
318 (Field::SFDefaultFlags
| Field::FStdAccess
),
319 static_cast<FieldEditMethodSig
>(&FrameBufferObject::editHandleColorSamples
),
320 static_cast<FieldGetMethodSig
>(&FrameBufferObject::getHandleColorSamples
));
322 oType
.addInitialDesc(pDesc
);
324 pDesc
= new SFUInt32::Description(
325 SFUInt32::getClassType(),
328 CoverageSamplesFieldId
, CoverageSamplesFieldMask
,
330 (Field::SFDefaultFlags
| Field::FStdAccess
),
331 static_cast<FieldEditMethodSig
>(&FrameBufferObject::editHandleCoverageSamples
),
332 static_cast<FieldGetMethodSig
>(&FrameBufferObject::getHandleCoverageSamples
));
334 oType
.addInitialDesc(pDesc
);
336 pDesc
= new SFBool::Description(
337 SFBool::getClassType(),
338 "fixedSampleLocation",
340 FixedSampleLocationFieldId
, FixedSampleLocationFieldMask
,
342 (Field::SFDefaultFlags
| Field::FStdAccess
),
343 static_cast<FieldEditMethodSig
>(&FrameBufferObject::editHandleFixedSampleLocation
),
344 static_cast<FieldGetMethodSig
>(&FrameBufferObject::getHandleFixedSampleLocation
));
346 oType
.addInitialDesc(pDesc
);
348 pDesc
= new MFUnrecFrameBufferAttachmentPtr::Description(
349 MFUnrecFrameBufferAttachmentPtr::getClassType(),
350 "msaaColorAttachments",
351 "GL_COLOR_ATTACHMENTX slots, position defines X. \n"
352 "This defines the target buffers for color attachments.\n",
353 MsaaColorAttachmentsFieldId
, MsaaColorAttachmentsFieldMask
,
355 (Field::FClusterLocal
| Field::FThreadLocal
),
356 static_cast<FieldEditMethodSig
>(&FrameBufferObject::editHandleMsaaColorAttachments
),
357 static_cast<FieldGetMethodSig
>(&FrameBufferObject::getHandleMsaaColorAttachments
));
359 oType
.addInitialDesc(pDesc
);
361 pDesc
= new SFUnrecFrameBufferAttachmentPtr::Description(
362 SFUnrecFrameBufferAttachmentPtr::getClassType(),
363 "msaaDepthAttachment",
364 "GL_DEPTH_ATTACHMENT slot. The target for depth values.\n",
365 MsaaDepthAttachmentFieldId
, MsaaDepthAttachmentFieldMask
,
367 (Field::FClusterLocal
| Field::FThreadLocal
),
368 static_cast<FieldEditMethodSig
>(&FrameBufferObject::editHandleMsaaDepthAttachment
),
369 static_cast<FieldGetMethodSig
>(&FrameBufferObject::getHandleMsaaDepthAttachment
));
371 oType
.addInitialDesc(pDesc
);
373 pDesc
= new SFUnrecFrameBufferAttachmentPtr::Description(
374 SFUnrecFrameBufferAttachmentPtr::getClassType(),
375 "msaaStencilAttachment",
376 "GL_STENCIL_ATTACHMENT slot.\n",
377 MsaaStencilAttachmentFieldId
, MsaaStencilAttachmentFieldMask
,
379 (Field::FClusterLocal
| Field::FThreadLocal
),
380 static_cast<FieldEditMethodSig
>(&FrameBufferObject::editHandleMsaaStencilAttachment
),
381 static_cast<FieldGetMethodSig
>(&FrameBufferObject::getHandleMsaaStencilAttachment
));
383 oType
.addInitialDesc(pDesc
);
387 FrameBufferObjectBase::TypeObject
FrameBufferObjectBase::_type(
388 FrameBufferObjectBase::getClassname(),
389 Inherited::getClassname(),
392 reinterpret_cast<PrototypeCreateF
>(&FrameBufferObjectBase::createEmptyLocal
),
393 reinterpret_cast<InitContainerF
>(&FrameBufferObject::initMethod
),
394 reinterpret_cast<ExitContainerF
>(&FrameBufferObject::exitMethod
),
395 reinterpret_cast<InitalInsertDescFunc
>(
396 reinterpret_cast<void *>(&FrameBufferObject::classDescInserter
)),
399 "<?xml version=\"1.0\"?>\n"
402 " name=\"FrameBufferObject\"\n"
403 " parent=\"AttachmentContainer\"\n"
404 " library=\"System\"\n"
405 " pointerfieldtypes=\"both\"\n"
406 " structure=\"concrete\"\n"
407 " systemcomponent=\"true\"\n"
408 " parentsystemcomponent=\"true\"\n"
409 " decoratable=\"false\"\n"
410 " docGroupBase=\"GrpSystemWindowFBO\"\n"
412 " Framebuffer object. Encapsulates FBOs as defined by the EXT_framebuffer_object\n"
413 " OpenGL extension.\n"
417 " cardinality=\"single\"\n"
418 " visibility=\"internal\"\n"
419 " access=\"public\"\n"
420 " defaultValue=\"0\"\n"
421 " fieldFlags=\"FClusterLocal\"\n"
423 " The OpenGL texture id for this frame buffer object.\n"
426 " name=\"multiSampleGLId\"\n"
428 " cardinality=\"single\"\n"
429 " visibility=\"internal\"\n"
430 " access=\"public\"\n"
431 " defaultValue=\"0\"\n"
432 " fieldFlags=\"FClusterLocal\"\n"
434 " The OpenGL texture id for this frame buffer object.\n"
437 " name=\"colorAttachments\"\n"
438 " type=\"FrameBufferAttachmentPtr\"\n"
439 " cardinality=\"multi\"\n"
440 " visibility=\"external\"\n"
441 " access=\"public\"\n"
443 " GL_COLOR_ATTACHMENTX slots, position defines X. \n"
444 " This defines the target buffers for color attachments.\n"
447 " name=\"drawBuffers\"\n"
449 " cardinality=\"multi\"\n"
450 " visibility=\"external\"\n"
451 " access=\"public\"\n"
452 " defaultValue=\"0\"\n"
454 " The target draw buffers. ex: GL_COLOR_ATTACHMENT0.\n"
455 " These are used to call DrawBuffers to tell OpenGL what targets\n"
459 " name=\"depthAttachment\"\n"
460 " type=\"FrameBufferAttachmentPtr\"\n"
461 " cardinality=\"single\"\n"
462 " visibility=\"external\"\n"
463 " access=\"public\"\n"
465 " GL_DEPTH_ATTACHMENT slot. The target for depth values.\n"
468 " name=\"stencilAttachment\"\n"
469 " type=\"FrameBufferAttachmentPtr\"\n"
470 " cardinality=\"single\"\n"
471 " visibility=\"external\"\n"
472 " access=\"public\"\n"
474 " GL_STENCIL_ATTACHMENT slot.\n"
479 " cardinality=\"single\"\n"
480 " visibility=\"external\"\n"
481 " access=\"public\"\n"
482 " defaultValue=\"0\"\n"
488 " cardinality=\"single\"\n"
489 " visibility=\"external\"\n"
490 " access=\"public\"\n"
491 " defaultValue=\"0\"\n"
496 " name=\"postProcessOnDeactivate\"\n"
498 " cardinality=\"single\"\n"
499 " visibility=\"external\"\n"
500 " access=\"public\"\n"
501 " defaultValue=\"false\"\n"
503 " Enable to check and generate mipmap level or copy the texture buffer\n"
504 " result back to the image\n"
509 " name=\"enableMultiSample\"\n"
511 " cardinality=\"single\"\n"
512 " visibility=\"external\"\n"
513 " access=\"public\"\n"
514 " defaultValue=\"false\"\n"
519 " name=\"colorSamples\"\n"
521 " cardinality=\"single\"\n"
522 " visibility=\"external\"\n"
523 " access=\"public\"\n"
524 " defaultValue=\"4\"\n"
529 " name=\"coverageSamples\"\n"
531 " cardinality=\"single\"\n"
532 " visibility=\"external\"\n"
533 " access=\"public\"\n"
534 " defaultValue=\"4\"\n"
539 " name=\"fixedSampleLocation\"\n"
541 " cardinality=\"single\"\n"
542 " visibility=\"external\"\n"
543 " access=\"public\"\n"
544 " defaultValue=\"true\"\n"
550 " name=\"msaaColorAttachments\"\n"
551 " type=\"FrameBufferAttachmentPtr\"\n"
552 " cardinality=\"multi\"\n"
553 " visibility=\"internal\"\n"
554 " access=\"protected\"\n"
555 " fieldFlags=\"FClusterLocal,FThreadLocal\"\n"
557 " GL_COLOR_ATTACHMENTX slots, position defines X. \n"
558 " This defines the target buffers for color attachments.\n"
561 " name=\"msaaDepthAttachment\"\n"
562 " type=\"FrameBufferAttachmentPtr\"\n"
563 " cardinality=\"single\"\n"
564 " visibility=\"internal\"\n"
565 " access=\"protected\"\n"
566 " fieldFlags=\"FClusterLocal,FThreadLocal\"\n"
568 " GL_DEPTH_ATTACHMENT slot. The target for depth values.\n"
571 " name=\"msaaStencilAttachment\"\n"
572 " type=\"FrameBufferAttachmentPtr\"\n"
573 " cardinality=\"single\"\n"
574 " visibility=\"internal\"\n"
575 " access=\"protected\"\n"
576 " fieldFlags=\"FClusterLocal,FThreadLocal\"\n"
578 " GL_STENCIL_ATTACHMENT slot.\n"
581 "</FieldContainer>\n",
582 "Framebuffer object. Encapsulates FBOs as defined by the EXT_framebuffer_object\n"
583 "OpenGL extension.\n"
586 /*------------------------------ get -----------------------------------*/
588 FieldContainerType
&FrameBufferObjectBase::getType(void)
593 const FieldContainerType
&FrameBufferObjectBase::getType(void) const
598 UInt32
FrameBufferObjectBase::getContainerSize(void) const
600 return sizeof(FrameBufferObject
);
603 /*------------------------- decorator get ------------------------------*/
606 SFGLenum
*FrameBufferObjectBase::editSFGLId(void)
608 editSField(GLIdFieldMask
);
613 const SFGLenum
*FrameBufferObjectBase::getSFGLId(void) const
619 SFGLenum
*FrameBufferObjectBase::editSFMultiSampleGLId(void)
621 editSField(MultiSampleGLIdFieldMask
);
623 return &_sfMultiSampleGLId
;
626 const SFGLenum
*FrameBufferObjectBase::getSFMultiSampleGLId(void) const
628 return &_sfMultiSampleGLId
;
632 //! Get the FrameBufferObject::_mfColorAttachments field.
633 const MFUnrecFrameBufferAttachmentPtr
*FrameBufferObjectBase::getMFColorAttachments(void) const
635 return &_mfColorAttachments
;
638 MFUnrecFrameBufferAttachmentPtr
*FrameBufferObjectBase::editMFColorAttachments(void)
640 editMField(ColorAttachmentsFieldMask
, _mfColorAttachments
);
642 return &_mfColorAttachments
;
644 FrameBufferAttachment
* FrameBufferObjectBase::getColorAttachments(const UInt32 index
) const
646 return _mfColorAttachments
[index
];
649 MFGLenum
*FrameBufferObjectBase::editMFDrawBuffers(void)
651 editMField(DrawBuffersFieldMask
, _mfDrawBuffers
);
653 return &_mfDrawBuffers
;
656 const MFGLenum
*FrameBufferObjectBase::getMFDrawBuffers(void) const
658 return &_mfDrawBuffers
;
662 //! Get the FrameBufferObject::_sfDepthAttachment field.
663 const SFUnrecFrameBufferAttachmentPtr
*FrameBufferObjectBase::getSFDepthAttachment(void) const
665 return &_sfDepthAttachment
;
668 SFUnrecFrameBufferAttachmentPtr
*FrameBufferObjectBase::editSFDepthAttachment(void)
670 editSField(DepthAttachmentFieldMask
);
672 return &_sfDepthAttachment
;
675 //! Get the value of the FrameBufferObject::_sfDepthAttachment field.
676 FrameBufferAttachment
* FrameBufferObjectBase::getDepthAttachment(void) const
678 return _sfDepthAttachment
.getValue();
681 //! Set the value of the FrameBufferObject::_sfDepthAttachment field.
682 void FrameBufferObjectBase::setDepthAttachment(FrameBufferAttachment
* const value
)
684 editSField(DepthAttachmentFieldMask
);
686 _sfDepthAttachment
.setValue(value
);
690 //! Get the FrameBufferObject::_sfStencilAttachment field.
691 const SFUnrecFrameBufferAttachmentPtr
*FrameBufferObjectBase::getSFStencilAttachment(void) const
693 return &_sfStencilAttachment
;
696 SFUnrecFrameBufferAttachmentPtr
*FrameBufferObjectBase::editSFStencilAttachment(void)
698 editSField(StencilAttachmentFieldMask
);
700 return &_sfStencilAttachment
;
703 //! Get the value of the FrameBufferObject::_sfStencilAttachment field.
704 FrameBufferAttachment
* FrameBufferObjectBase::getStencilAttachment(void) const
706 return _sfStencilAttachment
.getValue();
709 //! Set the value of the FrameBufferObject::_sfStencilAttachment field.
710 void FrameBufferObjectBase::setStencilAttachment(FrameBufferAttachment
* const value
)
712 editSField(StencilAttachmentFieldMask
);
714 _sfStencilAttachment
.setValue(value
);
718 SFUInt16
*FrameBufferObjectBase::editSFWidth(void)
720 editSField(WidthFieldMask
);
725 const SFUInt16
*FrameBufferObjectBase::getSFWidth(void) const
731 SFUInt16
*FrameBufferObjectBase::editSFHeight(void)
733 editSField(HeightFieldMask
);
738 const SFUInt16
*FrameBufferObjectBase::getSFHeight(void) const
744 SFBool
*FrameBufferObjectBase::editSFPostProcessOnDeactivate(void)
746 editSField(PostProcessOnDeactivateFieldMask
);
748 return &_sfPostProcessOnDeactivate
;
751 const SFBool
*FrameBufferObjectBase::getSFPostProcessOnDeactivate(void) const
753 return &_sfPostProcessOnDeactivate
;
757 SFBool
*FrameBufferObjectBase::editSFEnableMultiSample(void)
759 editSField(EnableMultiSampleFieldMask
);
761 return &_sfEnableMultiSample
;
764 const SFBool
*FrameBufferObjectBase::getSFEnableMultiSample(void) const
766 return &_sfEnableMultiSample
;
770 SFUInt32
*FrameBufferObjectBase::editSFColorSamples(void)
772 editSField(ColorSamplesFieldMask
);
774 return &_sfColorSamples
;
777 const SFUInt32
*FrameBufferObjectBase::getSFColorSamples(void) const
779 return &_sfColorSamples
;
783 SFUInt32
*FrameBufferObjectBase::editSFCoverageSamples(void)
785 editSField(CoverageSamplesFieldMask
);
787 return &_sfCoverageSamples
;
790 const SFUInt32
*FrameBufferObjectBase::getSFCoverageSamples(void) const
792 return &_sfCoverageSamples
;
796 SFBool
*FrameBufferObjectBase::editSFFixedSampleLocation(void)
798 editSField(FixedSampleLocationFieldMask
);
800 return &_sfFixedSampleLocation
;
803 const SFBool
*FrameBufferObjectBase::getSFFixedSampleLocation(void) const
805 return &_sfFixedSampleLocation
;
809 //! Get the FrameBufferObject::_mfMsaaColorAttachments field.
810 const MFUnrecFrameBufferAttachmentPtr
*FrameBufferObjectBase::getMFMsaaColorAttachments(void) const
812 return &_mfMsaaColorAttachments
;
815 MFUnrecFrameBufferAttachmentPtr
*FrameBufferObjectBase::editMFMsaaColorAttachments(void)
817 editMField(MsaaColorAttachmentsFieldMask
, _mfMsaaColorAttachments
);
819 return &_mfMsaaColorAttachments
;
821 FrameBufferAttachment
* FrameBufferObjectBase::getMsaaColorAttachments(const UInt32 index
) const
823 return _mfMsaaColorAttachments
[index
];
826 //! Get the FrameBufferObject::_sfMsaaDepthAttachment field.
827 const SFUnrecFrameBufferAttachmentPtr
*FrameBufferObjectBase::getSFMsaaDepthAttachment(void) const
829 return &_sfMsaaDepthAttachment
;
832 SFUnrecFrameBufferAttachmentPtr
*FrameBufferObjectBase::editSFMsaaDepthAttachment(void)
834 editSField(MsaaDepthAttachmentFieldMask
);
836 return &_sfMsaaDepthAttachment
;
839 //! Get the value of the FrameBufferObject::_sfMsaaDepthAttachment field.
840 FrameBufferAttachment
* FrameBufferObjectBase::getMsaaDepthAttachment(void) const
842 return _sfMsaaDepthAttachment
.getValue();
845 //! Set the value of the FrameBufferObject::_sfMsaaDepthAttachment field.
846 void FrameBufferObjectBase::setMsaaDepthAttachment(FrameBufferAttachment
* const value
)
848 editSField(MsaaDepthAttachmentFieldMask
);
850 _sfMsaaDepthAttachment
.setValue(value
);
854 //! Get the FrameBufferObject::_sfMsaaStencilAttachment field.
855 const SFUnrecFrameBufferAttachmentPtr
*FrameBufferObjectBase::getSFMsaaStencilAttachment(void) const
857 return &_sfMsaaStencilAttachment
;
860 SFUnrecFrameBufferAttachmentPtr
*FrameBufferObjectBase::editSFMsaaStencilAttachment(void)
862 editSField(MsaaStencilAttachmentFieldMask
);
864 return &_sfMsaaStencilAttachment
;
867 //! Get the value of the FrameBufferObject::_sfMsaaStencilAttachment field.
868 FrameBufferAttachment
* FrameBufferObjectBase::getMsaaStencilAttachment(void) const
870 return _sfMsaaStencilAttachment
.getValue();
873 //! Set the value of the FrameBufferObject::_sfMsaaStencilAttachment field.
874 void FrameBufferObjectBase::setMsaaStencilAttachment(FrameBufferAttachment
* const value
)
876 editSField(MsaaStencilAttachmentFieldMask
);
878 _sfMsaaStencilAttachment
.setValue(value
);
884 void FrameBufferObjectBase::pushToColorAttachments(FrameBufferAttachment
* const value
)
886 editMField(ColorAttachmentsFieldMask
, _mfColorAttachments
);
888 _mfColorAttachments
.push_back(value
);
891 void FrameBufferObjectBase::assignColorAttachments(const MFUnrecFrameBufferAttachmentPtr
&value
)
893 MFUnrecFrameBufferAttachmentPtr::const_iterator elemIt
=
895 MFUnrecFrameBufferAttachmentPtr::const_iterator elemEnd
=
898 static_cast<FrameBufferObject
*>(this)->clearColorAttachments();
900 while(elemIt
!= elemEnd
)
902 this->pushToColorAttachments(*elemIt
);
908 void FrameBufferObjectBase::removeFromColorAttachments(UInt32 uiIndex
)
910 if(uiIndex
< _mfColorAttachments
.size())
912 editMField(ColorAttachmentsFieldMask
, _mfColorAttachments
);
914 _mfColorAttachments
.erase(uiIndex
);
918 void FrameBufferObjectBase::removeObjFromColorAttachments(FrameBufferAttachment
* const value
)
920 Int32 iElemIdx
= _mfColorAttachments
.findIndex(value
);
924 editMField(ColorAttachmentsFieldMask
, _mfColorAttachments
);
926 _mfColorAttachments
.erase(iElemIdx
);
929 void FrameBufferObjectBase::clearColorAttachments(void)
931 editMField(ColorAttachmentsFieldMask
, _mfColorAttachments
);
934 _mfColorAttachments
.clear();
937 void FrameBufferObjectBase::pushToMsaaColorAttachments(FrameBufferAttachment
* const value
)
939 editMField(MsaaColorAttachmentsFieldMask
, _mfMsaaColorAttachments
);
941 _mfMsaaColorAttachments
.push_back(value
);
944 void FrameBufferObjectBase::assignMsaaColorAttachments(const MFUnrecFrameBufferAttachmentPtr
&value
)
946 MFUnrecFrameBufferAttachmentPtr::const_iterator elemIt
=
948 MFUnrecFrameBufferAttachmentPtr::const_iterator elemEnd
=
951 static_cast<FrameBufferObject
*>(this)->clearMsaaColorAttachments();
953 while(elemIt
!= elemEnd
)
955 this->pushToMsaaColorAttachments(*elemIt
);
961 void FrameBufferObjectBase::removeFromMsaaColorAttachments(UInt32 uiIndex
)
963 if(uiIndex
< _mfMsaaColorAttachments
.size())
965 editMField(MsaaColorAttachmentsFieldMask
, _mfMsaaColorAttachments
);
967 _mfMsaaColorAttachments
.erase(uiIndex
);
971 void FrameBufferObjectBase::removeObjFromMsaaColorAttachments(FrameBufferAttachment
* const value
)
973 Int32 iElemIdx
= _mfMsaaColorAttachments
.findIndex(value
);
977 editMField(MsaaColorAttachmentsFieldMask
, _mfMsaaColorAttachments
);
979 _mfMsaaColorAttachments
.erase(iElemIdx
);
982 void FrameBufferObjectBase::clearMsaaColorAttachments(void)
984 editMField(MsaaColorAttachmentsFieldMask
, _mfMsaaColorAttachments
);
987 _mfMsaaColorAttachments
.clear();
992 /*------------------------------ access -----------------------------------*/
994 SizeT
FrameBufferObjectBase::getBinSize(ConstFieldMaskArg whichField
)
996 SizeT returnValue
= Inherited::getBinSize(whichField
);
998 if(FieldBits::NoField
!= (GLIdFieldMask
& whichField
))
1000 returnValue
+= _sfGLId
.getBinSize();
1002 if(FieldBits::NoField
!= (MultiSampleGLIdFieldMask
& whichField
))
1004 returnValue
+= _sfMultiSampleGLId
.getBinSize();
1006 if(FieldBits::NoField
!= (ColorAttachmentsFieldMask
& whichField
))
1008 returnValue
+= _mfColorAttachments
.getBinSize();
1010 if(FieldBits::NoField
!= (DrawBuffersFieldMask
& whichField
))
1012 returnValue
+= _mfDrawBuffers
.getBinSize();
1014 if(FieldBits::NoField
!= (DepthAttachmentFieldMask
& whichField
))
1016 returnValue
+= _sfDepthAttachment
.getBinSize();
1018 if(FieldBits::NoField
!= (StencilAttachmentFieldMask
& whichField
))
1020 returnValue
+= _sfStencilAttachment
.getBinSize();
1022 if(FieldBits::NoField
!= (WidthFieldMask
& whichField
))
1024 returnValue
+= _sfWidth
.getBinSize();
1026 if(FieldBits::NoField
!= (HeightFieldMask
& whichField
))
1028 returnValue
+= _sfHeight
.getBinSize();
1030 if(FieldBits::NoField
!= (PostProcessOnDeactivateFieldMask
& whichField
))
1032 returnValue
+= _sfPostProcessOnDeactivate
.getBinSize();
1034 if(FieldBits::NoField
!= (EnableMultiSampleFieldMask
& whichField
))
1036 returnValue
+= _sfEnableMultiSample
.getBinSize();
1038 if(FieldBits::NoField
!= (ColorSamplesFieldMask
& whichField
))
1040 returnValue
+= _sfColorSamples
.getBinSize();
1042 if(FieldBits::NoField
!= (CoverageSamplesFieldMask
& whichField
))
1044 returnValue
+= _sfCoverageSamples
.getBinSize();
1046 if(FieldBits::NoField
!= (FixedSampleLocationFieldMask
& whichField
))
1048 returnValue
+= _sfFixedSampleLocation
.getBinSize();
1050 if(FieldBits::NoField
!= (MsaaColorAttachmentsFieldMask
& whichField
))
1052 returnValue
+= _mfMsaaColorAttachments
.getBinSize();
1054 if(FieldBits::NoField
!= (MsaaDepthAttachmentFieldMask
& whichField
))
1056 returnValue
+= _sfMsaaDepthAttachment
.getBinSize();
1058 if(FieldBits::NoField
!= (MsaaStencilAttachmentFieldMask
& whichField
))
1060 returnValue
+= _sfMsaaStencilAttachment
.getBinSize();
1066 void FrameBufferObjectBase::copyToBin(BinaryDataHandler
&pMem
,
1067 ConstFieldMaskArg whichField
)
1069 Inherited::copyToBin(pMem
, whichField
);
1071 if(FieldBits::NoField
!= (GLIdFieldMask
& whichField
))
1073 _sfGLId
.copyToBin(pMem
);
1075 if(FieldBits::NoField
!= (MultiSampleGLIdFieldMask
& whichField
))
1077 _sfMultiSampleGLId
.copyToBin(pMem
);
1079 if(FieldBits::NoField
!= (ColorAttachmentsFieldMask
& whichField
))
1081 _mfColorAttachments
.copyToBin(pMem
);
1083 if(FieldBits::NoField
!= (DrawBuffersFieldMask
& whichField
))
1085 _mfDrawBuffers
.copyToBin(pMem
);
1087 if(FieldBits::NoField
!= (DepthAttachmentFieldMask
& whichField
))
1089 _sfDepthAttachment
.copyToBin(pMem
);
1091 if(FieldBits::NoField
!= (StencilAttachmentFieldMask
& whichField
))
1093 _sfStencilAttachment
.copyToBin(pMem
);
1095 if(FieldBits::NoField
!= (WidthFieldMask
& whichField
))
1097 _sfWidth
.copyToBin(pMem
);
1099 if(FieldBits::NoField
!= (HeightFieldMask
& whichField
))
1101 _sfHeight
.copyToBin(pMem
);
1103 if(FieldBits::NoField
!= (PostProcessOnDeactivateFieldMask
& whichField
))
1105 _sfPostProcessOnDeactivate
.copyToBin(pMem
);
1107 if(FieldBits::NoField
!= (EnableMultiSampleFieldMask
& whichField
))
1109 _sfEnableMultiSample
.copyToBin(pMem
);
1111 if(FieldBits::NoField
!= (ColorSamplesFieldMask
& whichField
))
1113 _sfColorSamples
.copyToBin(pMem
);
1115 if(FieldBits::NoField
!= (CoverageSamplesFieldMask
& whichField
))
1117 _sfCoverageSamples
.copyToBin(pMem
);
1119 if(FieldBits::NoField
!= (FixedSampleLocationFieldMask
& whichField
))
1121 _sfFixedSampleLocation
.copyToBin(pMem
);
1123 if(FieldBits::NoField
!= (MsaaColorAttachmentsFieldMask
& whichField
))
1125 _mfMsaaColorAttachments
.copyToBin(pMem
);
1127 if(FieldBits::NoField
!= (MsaaDepthAttachmentFieldMask
& whichField
))
1129 _sfMsaaDepthAttachment
.copyToBin(pMem
);
1131 if(FieldBits::NoField
!= (MsaaStencilAttachmentFieldMask
& whichField
))
1133 _sfMsaaStencilAttachment
.copyToBin(pMem
);
1137 void FrameBufferObjectBase::copyFromBin(BinaryDataHandler
&pMem
,
1138 ConstFieldMaskArg whichField
)
1140 Inherited::copyFromBin(pMem
, whichField
);
1142 if(FieldBits::NoField
!= (GLIdFieldMask
& whichField
))
1144 editSField(GLIdFieldMask
);
1145 _sfGLId
.copyFromBin(pMem
);
1147 if(FieldBits::NoField
!= (MultiSampleGLIdFieldMask
& whichField
))
1149 editSField(MultiSampleGLIdFieldMask
);
1150 _sfMultiSampleGLId
.copyFromBin(pMem
);
1152 if(FieldBits::NoField
!= (ColorAttachmentsFieldMask
& whichField
))
1154 editMField(ColorAttachmentsFieldMask
, _mfColorAttachments
);
1155 _mfColorAttachments
.copyFromBin(pMem
);
1157 if(FieldBits::NoField
!= (DrawBuffersFieldMask
& whichField
))
1159 editMField(DrawBuffersFieldMask
, _mfDrawBuffers
);
1160 _mfDrawBuffers
.copyFromBin(pMem
);
1162 if(FieldBits::NoField
!= (DepthAttachmentFieldMask
& whichField
))
1164 editSField(DepthAttachmentFieldMask
);
1165 _sfDepthAttachment
.copyFromBin(pMem
);
1167 if(FieldBits::NoField
!= (StencilAttachmentFieldMask
& whichField
))
1169 editSField(StencilAttachmentFieldMask
);
1170 _sfStencilAttachment
.copyFromBin(pMem
);
1172 if(FieldBits::NoField
!= (WidthFieldMask
& whichField
))
1174 editSField(WidthFieldMask
);
1175 _sfWidth
.copyFromBin(pMem
);
1177 if(FieldBits::NoField
!= (HeightFieldMask
& whichField
))
1179 editSField(HeightFieldMask
);
1180 _sfHeight
.copyFromBin(pMem
);
1182 if(FieldBits::NoField
!= (PostProcessOnDeactivateFieldMask
& whichField
))
1184 editSField(PostProcessOnDeactivateFieldMask
);
1185 _sfPostProcessOnDeactivate
.copyFromBin(pMem
);
1187 if(FieldBits::NoField
!= (EnableMultiSampleFieldMask
& whichField
))
1189 editSField(EnableMultiSampleFieldMask
);
1190 _sfEnableMultiSample
.copyFromBin(pMem
);
1192 if(FieldBits::NoField
!= (ColorSamplesFieldMask
& whichField
))
1194 editSField(ColorSamplesFieldMask
);
1195 _sfColorSamples
.copyFromBin(pMem
);
1197 if(FieldBits::NoField
!= (CoverageSamplesFieldMask
& whichField
))
1199 editSField(CoverageSamplesFieldMask
);
1200 _sfCoverageSamples
.copyFromBin(pMem
);
1202 if(FieldBits::NoField
!= (FixedSampleLocationFieldMask
& whichField
))
1204 editSField(FixedSampleLocationFieldMask
);
1205 _sfFixedSampleLocation
.copyFromBin(pMem
);
1207 if(FieldBits::NoField
!= (MsaaColorAttachmentsFieldMask
& whichField
))
1209 editMField(MsaaColorAttachmentsFieldMask
, _mfMsaaColorAttachments
);
1210 _mfMsaaColorAttachments
.copyFromBin(pMem
);
1212 if(FieldBits::NoField
!= (MsaaDepthAttachmentFieldMask
& whichField
))
1214 editSField(MsaaDepthAttachmentFieldMask
);
1215 _sfMsaaDepthAttachment
.copyFromBin(pMem
);
1217 if(FieldBits::NoField
!= (MsaaStencilAttachmentFieldMask
& whichField
))
1219 editSField(MsaaStencilAttachmentFieldMask
);
1220 _sfMsaaStencilAttachment
.copyFromBin(pMem
);
1224 //! create a new instance of the class
1225 FrameBufferObjectTransitPtr
FrameBufferObjectBase::createLocal(BitVector bFlags
)
1227 FrameBufferObjectTransitPtr fc
;
1229 if(getClassType().getPrototype() != NULL
)
1231 FieldContainerTransitPtr tmpPtr
=
1232 getClassType().getPrototype()-> shallowCopyLocal(bFlags
);
1234 fc
= dynamic_pointer_cast
<FrameBufferObject
>(tmpPtr
);
1240 //! create a new instance of the class, copy the container flags
1241 FrameBufferObjectTransitPtr
FrameBufferObjectBase::createDependent(BitVector bFlags
)
1243 FrameBufferObjectTransitPtr fc
;
1245 if(getClassType().getPrototype() != NULL
)
1247 FieldContainerTransitPtr tmpPtr
=
1248 getClassType().getPrototype()-> shallowCopyDependent(bFlags
);
1250 fc
= dynamic_pointer_cast
<FrameBufferObject
>(tmpPtr
);
1256 //! create a new instance of the class
1257 FrameBufferObjectTransitPtr
FrameBufferObjectBase::create(void)
1259 FrameBufferObjectTransitPtr fc
;
1261 if(getClassType().getPrototype() != NULL
)
1263 FieldContainerTransitPtr tmpPtr
=
1264 getClassType().getPrototype()-> shallowCopy();
1266 fc
= dynamic_pointer_cast
<FrameBufferObject
>(tmpPtr
);
1272 FrameBufferObject
*FrameBufferObjectBase::createEmptyLocal(BitVector bFlags
)
1274 FrameBufferObject
*returnValue
;
1276 newPtr
<FrameBufferObject
>(returnValue
, bFlags
);
1278 returnValue
->_pFieldFlags
->_bNamespaceMask
&= ~bFlags
;
1283 //! create an empty new instance of the class, do not copy the prototype
1284 FrameBufferObject
*FrameBufferObjectBase::createEmpty(void)
1286 FrameBufferObject
*returnValue
;
1288 newPtr
<FrameBufferObject
>(returnValue
, Thread::getCurrentLocalFlags());
1290 returnValue
->_pFieldFlags
->_bNamespaceMask
&=
1291 ~Thread::getCurrentLocalFlags();
1297 FieldContainerTransitPtr
FrameBufferObjectBase::shallowCopyLocal(
1298 BitVector bFlags
) const
1300 FrameBufferObject
*tmpPtr
;
1302 newPtr(tmpPtr
, dynamic_cast<const FrameBufferObject
*>(this), bFlags
);
1304 FieldContainerTransitPtr
returnValue(tmpPtr
);
1306 tmpPtr
->_pFieldFlags
->_bNamespaceMask
&= ~bFlags
;
1311 FieldContainerTransitPtr
FrameBufferObjectBase::shallowCopyDependent(
1312 BitVector bFlags
) const
1314 FrameBufferObject
*tmpPtr
;
1316 newPtr(tmpPtr
, dynamic_cast<const FrameBufferObject
*>(this), ~bFlags
);
1318 FieldContainerTransitPtr
returnValue(tmpPtr
);
1320 tmpPtr
->_pFieldFlags
->_bNamespaceMask
= bFlags
;
1325 FieldContainerTransitPtr
FrameBufferObjectBase::shallowCopy(void) const
1327 FrameBufferObject
*tmpPtr
;
1330 dynamic_cast<const FrameBufferObject
*>(this),
1331 Thread::getCurrentLocalFlags());
1333 tmpPtr
->_pFieldFlags
->_bNamespaceMask
&= ~Thread::getCurrentLocalFlags();
1335 FieldContainerTransitPtr
returnValue(tmpPtr
);
1343 /*------------------------- constructors ----------------------------------*/
1345 FrameBufferObjectBase::FrameBufferObjectBase(void) :
1347 _sfGLId (GLenum(0)),
1348 _sfMultiSampleGLId (GLenum(0)),
1349 _mfColorAttachments (),
1350 _mfDrawBuffers (GLenum(0)),
1351 _sfDepthAttachment (NULL
),
1352 _sfStencilAttachment (NULL
),
1353 _sfWidth (UInt16(0)),
1354 _sfHeight (UInt16(0)),
1355 _sfPostProcessOnDeactivate(bool(false)),
1356 _sfEnableMultiSample (bool(false)),
1357 _sfColorSamples (UInt32(4)),
1358 _sfCoverageSamples (UInt32(4)),
1359 _sfFixedSampleLocation (bool(true)),
1360 _mfMsaaColorAttachments (),
1361 _sfMsaaDepthAttachment (NULL
),
1362 _sfMsaaStencilAttachment (NULL
)
1366 FrameBufferObjectBase::FrameBufferObjectBase(const FrameBufferObjectBase
&source
) :
1368 _sfGLId (source
._sfGLId
),
1369 _sfMultiSampleGLId (source
._sfMultiSampleGLId
),
1370 _mfColorAttachments (),
1371 _mfDrawBuffers (source
._mfDrawBuffers
),
1372 _sfDepthAttachment (NULL
),
1373 _sfStencilAttachment (NULL
),
1374 _sfWidth (source
._sfWidth
),
1375 _sfHeight (source
._sfHeight
),
1376 _sfPostProcessOnDeactivate(source
._sfPostProcessOnDeactivate
),
1377 _sfEnableMultiSample (source
._sfEnableMultiSample
),
1378 _sfColorSamples (source
._sfColorSamples
),
1379 _sfCoverageSamples (source
._sfCoverageSamples
),
1380 _sfFixedSampleLocation (source
._sfFixedSampleLocation
),
1381 _mfMsaaColorAttachments (),
1382 _sfMsaaDepthAttachment (NULL
),
1383 _sfMsaaStencilAttachment (NULL
)
1388 /*-------------------------- destructors ----------------------------------*/
1390 FrameBufferObjectBase::~FrameBufferObjectBase(void)
1394 void FrameBufferObjectBase::onCreate(const FrameBufferObject
*source
)
1396 Inherited::onCreate(source
);
1400 FrameBufferObject
*pThis
= static_cast<FrameBufferObject
*>(this);
1402 MFUnrecFrameBufferAttachmentPtr::const_iterator ColorAttachmentsIt
=
1403 source
->_mfColorAttachments
.begin();
1404 MFUnrecFrameBufferAttachmentPtr::const_iterator ColorAttachmentsEnd
=
1405 source
->_mfColorAttachments
.end ();
1407 while(ColorAttachmentsIt
!= ColorAttachmentsEnd
)
1409 pThis
->pushToColorAttachments(*ColorAttachmentsIt
);
1411 ++ColorAttachmentsIt
;
1414 pThis
->setDepthAttachment(source
->getDepthAttachment());
1416 pThis
->setStencilAttachment(source
->getStencilAttachment());
1418 MFUnrecFrameBufferAttachmentPtr::const_iterator MsaaColorAttachmentsIt
=
1419 source
->_mfMsaaColorAttachments
.begin();
1420 MFUnrecFrameBufferAttachmentPtr::const_iterator MsaaColorAttachmentsEnd
=
1421 source
->_mfMsaaColorAttachments
.end ();
1423 while(MsaaColorAttachmentsIt
!= MsaaColorAttachmentsEnd
)
1425 pThis
->pushToMsaaColorAttachments(*MsaaColorAttachmentsIt
);
1427 ++MsaaColorAttachmentsIt
;
1430 pThis
->setMsaaDepthAttachment(source
->getMsaaDepthAttachment());
1432 pThis
->setMsaaStencilAttachment(source
->getMsaaStencilAttachment());
1436 GetFieldHandlePtr
FrameBufferObjectBase::getHandleGLId (void) const
1438 SFGLenum::GetHandlePtr
returnValue(
1439 new SFGLenum::GetHandle(
1441 this->getType().getFieldDesc(GLIdFieldId
),
1442 const_cast<FrameBufferObjectBase
*>(this)));
1447 EditFieldHandlePtr
FrameBufferObjectBase::editHandleGLId (void)
1449 SFGLenum::EditHandlePtr
returnValue(
1450 new SFGLenum::EditHandle(
1452 this->getType().getFieldDesc(GLIdFieldId
),
1456 editSField(GLIdFieldMask
);
1461 GetFieldHandlePtr
FrameBufferObjectBase::getHandleMultiSampleGLId (void) const
1463 SFGLenum::GetHandlePtr
returnValue(
1464 new SFGLenum::GetHandle(
1465 &_sfMultiSampleGLId
,
1466 this->getType().getFieldDesc(MultiSampleGLIdFieldId
),
1467 const_cast<FrameBufferObjectBase
*>(this)));
1472 EditFieldHandlePtr
FrameBufferObjectBase::editHandleMultiSampleGLId(void)
1474 SFGLenum::EditHandlePtr
returnValue(
1475 new SFGLenum::EditHandle(
1476 &_sfMultiSampleGLId
,
1477 this->getType().getFieldDesc(MultiSampleGLIdFieldId
),
1481 editSField(MultiSampleGLIdFieldMask
);
1486 GetFieldHandlePtr
FrameBufferObjectBase::getHandleColorAttachments (void) const
1488 MFUnrecFrameBufferAttachmentPtr::GetHandlePtr
returnValue(
1489 new MFUnrecFrameBufferAttachmentPtr::GetHandle(
1490 &_mfColorAttachments
,
1491 this->getType().getFieldDesc(ColorAttachmentsFieldId
),
1492 const_cast<FrameBufferObjectBase
*>(this)));
1497 EditFieldHandlePtr
FrameBufferObjectBase::editHandleColorAttachments(void)
1499 MFUnrecFrameBufferAttachmentPtr::EditHandlePtr
returnValue(
1500 new MFUnrecFrameBufferAttachmentPtr::EditHandle(
1501 &_mfColorAttachments
,
1502 this->getType().getFieldDesc(ColorAttachmentsFieldId
),
1505 returnValue
->setAddMethod(
1506 boost::bind(&FrameBufferObject::pushToColorAttachments
,
1507 static_cast<FrameBufferObject
*>(this), _1
));
1508 returnValue
->setRemoveMethod(
1509 boost::bind(&FrameBufferObject::removeFromColorAttachments
,
1510 static_cast<FrameBufferObject
*>(this), _1
));
1511 returnValue
->setRemoveObjMethod(
1512 boost::bind(&FrameBufferObject::removeObjFromColorAttachments
,
1513 static_cast<FrameBufferObject
*>(this), _1
));
1514 returnValue
->setClearMethod(
1515 boost::bind(&FrameBufferObject::clearColorAttachments
,
1516 static_cast<FrameBufferObject
*>(this)));
1518 editMField(ColorAttachmentsFieldMask
, _mfColorAttachments
);
1523 GetFieldHandlePtr
FrameBufferObjectBase::getHandleDrawBuffers (void) const
1525 MFGLenum::GetHandlePtr
returnValue(
1526 new MFGLenum::GetHandle(
1528 this->getType().getFieldDesc(DrawBuffersFieldId
),
1529 const_cast<FrameBufferObjectBase
*>(this)));
1534 EditFieldHandlePtr
FrameBufferObjectBase::editHandleDrawBuffers (void)
1536 MFGLenum::EditHandlePtr
returnValue(
1537 new MFGLenum::EditHandle(
1539 this->getType().getFieldDesc(DrawBuffersFieldId
),
1543 editMField(DrawBuffersFieldMask
, _mfDrawBuffers
);
1548 GetFieldHandlePtr
FrameBufferObjectBase::getHandleDepthAttachment (void) const
1550 SFUnrecFrameBufferAttachmentPtr::GetHandlePtr
returnValue(
1551 new SFUnrecFrameBufferAttachmentPtr::GetHandle(
1552 &_sfDepthAttachment
,
1553 this->getType().getFieldDesc(DepthAttachmentFieldId
),
1554 const_cast<FrameBufferObjectBase
*>(this)));
1559 EditFieldHandlePtr
FrameBufferObjectBase::editHandleDepthAttachment(void)
1561 SFUnrecFrameBufferAttachmentPtr::EditHandlePtr
returnValue(
1562 new SFUnrecFrameBufferAttachmentPtr::EditHandle(
1563 &_sfDepthAttachment
,
1564 this->getType().getFieldDesc(DepthAttachmentFieldId
),
1567 returnValue
->setSetMethod(
1568 boost::bind(&FrameBufferObject::setDepthAttachment
,
1569 static_cast<FrameBufferObject
*>(this), _1
));
1571 editSField(DepthAttachmentFieldMask
);
1576 GetFieldHandlePtr
FrameBufferObjectBase::getHandleStencilAttachment (void) const
1578 SFUnrecFrameBufferAttachmentPtr::GetHandlePtr
returnValue(
1579 new SFUnrecFrameBufferAttachmentPtr::GetHandle(
1580 &_sfStencilAttachment
,
1581 this->getType().getFieldDesc(StencilAttachmentFieldId
),
1582 const_cast<FrameBufferObjectBase
*>(this)));
1587 EditFieldHandlePtr
FrameBufferObjectBase::editHandleStencilAttachment(void)
1589 SFUnrecFrameBufferAttachmentPtr::EditHandlePtr
returnValue(
1590 new SFUnrecFrameBufferAttachmentPtr::EditHandle(
1591 &_sfStencilAttachment
,
1592 this->getType().getFieldDesc(StencilAttachmentFieldId
),
1595 returnValue
->setSetMethod(
1596 boost::bind(&FrameBufferObject::setStencilAttachment
,
1597 static_cast<FrameBufferObject
*>(this), _1
));
1599 editSField(StencilAttachmentFieldMask
);
1604 GetFieldHandlePtr
FrameBufferObjectBase::getHandleWidth (void) const
1606 SFUInt16::GetHandlePtr
returnValue(
1607 new SFUInt16::GetHandle(
1609 this->getType().getFieldDesc(WidthFieldId
),
1610 const_cast<FrameBufferObjectBase
*>(this)));
1615 EditFieldHandlePtr
FrameBufferObjectBase::editHandleWidth (void)
1617 SFUInt16::EditHandlePtr
returnValue(
1618 new SFUInt16::EditHandle(
1620 this->getType().getFieldDesc(WidthFieldId
),
1624 editSField(WidthFieldMask
);
1629 GetFieldHandlePtr
FrameBufferObjectBase::getHandleHeight (void) const
1631 SFUInt16::GetHandlePtr
returnValue(
1632 new SFUInt16::GetHandle(
1634 this->getType().getFieldDesc(HeightFieldId
),
1635 const_cast<FrameBufferObjectBase
*>(this)));
1640 EditFieldHandlePtr
FrameBufferObjectBase::editHandleHeight (void)
1642 SFUInt16::EditHandlePtr
returnValue(
1643 new SFUInt16::EditHandle(
1645 this->getType().getFieldDesc(HeightFieldId
),
1649 editSField(HeightFieldMask
);
1654 GetFieldHandlePtr
FrameBufferObjectBase::getHandlePostProcessOnDeactivate (void) const
1656 SFBool::GetHandlePtr
returnValue(
1657 new SFBool::GetHandle(
1658 &_sfPostProcessOnDeactivate
,
1659 this->getType().getFieldDesc(PostProcessOnDeactivateFieldId
),
1660 const_cast<FrameBufferObjectBase
*>(this)));
1665 EditFieldHandlePtr
FrameBufferObjectBase::editHandlePostProcessOnDeactivate(void)
1667 SFBool::EditHandlePtr
returnValue(
1668 new SFBool::EditHandle(
1669 &_sfPostProcessOnDeactivate
,
1670 this->getType().getFieldDesc(PostProcessOnDeactivateFieldId
),
1674 editSField(PostProcessOnDeactivateFieldMask
);
1679 GetFieldHandlePtr
FrameBufferObjectBase::getHandleEnableMultiSample (void) const
1681 SFBool::GetHandlePtr
returnValue(
1682 new SFBool::GetHandle(
1683 &_sfEnableMultiSample
,
1684 this->getType().getFieldDesc(EnableMultiSampleFieldId
),
1685 const_cast<FrameBufferObjectBase
*>(this)));
1690 EditFieldHandlePtr
FrameBufferObjectBase::editHandleEnableMultiSample(void)
1692 SFBool::EditHandlePtr
returnValue(
1693 new SFBool::EditHandle(
1694 &_sfEnableMultiSample
,
1695 this->getType().getFieldDesc(EnableMultiSampleFieldId
),
1699 editSField(EnableMultiSampleFieldMask
);
1704 GetFieldHandlePtr
FrameBufferObjectBase::getHandleColorSamples (void) const
1706 SFUInt32::GetHandlePtr
returnValue(
1707 new SFUInt32::GetHandle(
1709 this->getType().getFieldDesc(ColorSamplesFieldId
),
1710 const_cast<FrameBufferObjectBase
*>(this)));
1715 EditFieldHandlePtr
FrameBufferObjectBase::editHandleColorSamples (void)
1717 SFUInt32::EditHandlePtr
returnValue(
1718 new SFUInt32::EditHandle(
1720 this->getType().getFieldDesc(ColorSamplesFieldId
),
1724 editSField(ColorSamplesFieldMask
);
1729 GetFieldHandlePtr
FrameBufferObjectBase::getHandleCoverageSamples (void) const
1731 SFUInt32::GetHandlePtr
returnValue(
1732 new SFUInt32::GetHandle(
1733 &_sfCoverageSamples
,
1734 this->getType().getFieldDesc(CoverageSamplesFieldId
),
1735 const_cast<FrameBufferObjectBase
*>(this)));
1740 EditFieldHandlePtr
FrameBufferObjectBase::editHandleCoverageSamples(void)
1742 SFUInt32::EditHandlePtr
returnValue(
1743 new SFUInt32::EditHandle(
1744 &_sfCoverageSamples
,
1745 this->getType().getFieldDesc(CoverageSamplesFieldId
),
1749 editSField(CoverageSamplesFieldMask
);
1754 GetFieldHandlePtr
FrameBufferObjectBase::getHandleFixedSampleLocation (void) const
1756 SFBool::GetHandlePtr
returnValue(
1757 new SFBool::GetHandle(
1758 &_sfFixedSampleLocation
,
1759 this->getType().getFieldDesc(FixedSampleLocationFieldId
),
1760 const_cast<FrameBufferObjectBase
*>(this)));
1765 EditFieldHandlePtr
FrameBufferObjectBase::editHandleFixedSampleLocation(void)
1767 SFBool::EditHandlePtr
returnValue(
1768 new SFBool::EditHandle(
1769 &_sfFixedSampleLocation
,
1770 this->getType().getFieldDesc(FixedSampleLocationFieldId
),
1774 editSField(FixedSampleLocationFieldMask
);
1779 GetFieldHandlePtr
FrameBufferObjectBase::getHandleMsaaColorAttachments (void) const
1781 MFUnrecFrameBufferAttachmentPtr::GetHandlePtr
returnValue(
1782 new MFUnrecFrameBufferAttachmentPtr::GetHandle(
1783 &_mfMsaaColorAttachments
,
1784 this->getType().getFieldDesc(MsaaColorAttachmentsFieldId
),
1785 const_cast<FrameBufferObjectBase
*>(this)));
1790 EditFieldHandlePtr
FrameBufferObjectBase::editHandleMsaaColorAttachments(void)
1792 MFUnrecFrameBufferAttachmentPtr::EditHandlePtr
returnValue(
1793 new MFUnrecFrameBufferAttachmentPtr::EditHandle(
1794 &_mfMsaaColorAttachments
,
1795 this->getType().getFieldDesc(MsaaColorAttachmentsFieldId
),
1798 returnValue
->setAddMethod(
1799 boost::bind(&FrameBufferObject::pushToMsaaColorAttachments
,
1800 static_cast<FrameBufferObject
*>(this), _1
));
1801 returnValue
->setRemoveMethod(
1802 boost::bind(&FrameBufferObject::removeFromMsaaColorAttachments
,
1803 static_cast<FrameBufferObject
*>(this), _1
));
1804 returnValue
->setRemoveObjMethod(
1805 boost::bind(&FrameBufferObject::removeObjFromMsaaColorAttachments
,
1806 static_cast<FrameBufferObject
*>(this), _1
));
1807 returnValue
->setClearMethod(
1808 boost::bind(&FrameBufferObject::clearMsaaColorAttachments
,
1809 static_cast<FrameBufferObject
*>(this)));
1811 editMField(MsaaColorAttachmentsFieldMask
, _mfMsaaColorAttachments
);
1816 GetFieldHandlePtr
FrameBufferObjectBase::getHandleMsaaDepthAttachment (void) const
1818 SFUnrecFrameBufferAttachmentPtr::GetHandlePtr
returnValue(
1819 new SFUnrecFrameBufferAttachmentPtr::GetHandle(
1820 &_sfMsaaDepthAttachment
,
1821 this->getType().getFieldDesc(MsaaDepthAttachmentFieldId
),
1822 const_cast<FrameBufferObjectBase
*>(this)));
1827 EditFieldHandlePtr
FrameBufferObjectBase::editHandleMsaaDepthAttachment(void)
1829 SFUnrecFrameBufferAttachmentPtr::EditHandlePtr
returnValue(
1830 new SFUnrecFrameBufferAttachmentPtr::EditHandle(
1831 &_sfMsaaDepthAttachment
,
1832 this->getType().getFieldDesc(MsaaDepthAttachmentFieldId
),
1835 returnValue
->setSetMethod(
1836 boost::bind(&FrameBufferObject::setMsaaDepthAttachment
,
1837 static_cast<FrameBufferObject
*>(this), _1
));
1839 editSField(MsaaDepthAttachmentFieldMask
);
1844 GetFieldHandlePtr
FrameBufferObjectBase::getHandleMsaaStencilAttachment (void) const
1846 SFUnrecFrameBufferAttachmentPtr::GetHandlePtr
returnValue(
1847 new SFUnrecFrameBufferAttachmentPtr::GetHandle(
1848 &_sfMsaaStencilAttachment
,
1849 this->getType().getFieldDesc(MsaaStencilAttachmentFieldId
),
1850 const_cast<FrameBufferObjectBase
*>(this)));
1855 EditFieldHandlePtr
FrameBufferObjectBase::editHandleMsaaStencilAttachment(void)
1857 SFUnrecFrameBufferAttachmentPtr::EditHandlePtr
returnValue(
1858 new SFUnrecFrameBufferAttachmentPtr::EditHandle(
1859 &_sfMsaaStencilAttachment
,
1860 this->getType().getFieldDesc(MsaaStencilAttachmentFieldId
),
1863 returnValue
->setSetMethod(
1864 boost::bind(&FrameBufferObject::setMsaaStencilAttachment
,
1865 static_cast<FrameBufferObject
*>(this), _1
));
1867 editSField(MsaaStencilAttachmentFieldMask
);
1873 #ifdef OSG_MT_CPTR_ASPECT
1874 void FrameBufferObjectBase::execSyncV( FieldContainer
&oFrom
,
1875 ConstFieldMaskArg whichField
,
1876 AspectOffsetStore
&oOffsets
,
1877 ConstFieldMaskArg syncMode
,
1878 const UInt32 uiSyncInfo
)
1880 FrameBufferObject
*pThis
= static_cast<FrameBufferObject
*>(this);
1882 pThis
->execSync(static_cast<FrameBufferObject
*>(&oFrom
),
1891 #ifdef OSG_MT_CPTR_ASPECT
1892 FieldContainer
*FrameBufferObjectBase::createAspectCopy(
1893 const FieldContainer
*pRefAspect
) const
1895 FrameBufferObject
*returnValue
;
1897 newAspectCopy(returnValue
,
1898 dynamic_cast<const FrameBufferObject
*>(pRefAspect
),
1899 dynamic_cast<const FrameBufferObject
*>(this));
1905 void FrameBufferObjectBase::resolveLinks(void)
1907 Inherited::resolveLinks();
1909 static_cast<FrameBufferObject
*>(this)->clearColorAttachments();
1911 static_cast<FrameBufferObject
*>(this)->setDepthAttachment(NULL
);
1913 static_cast<FrameBufferObject
*>(this)->setStencilAttachment(NULL
);
1915 static_cast<FrameBufferObject
*>(this)->clearMsaaColorAttachments();
1917 static_cast<FrameBufferObject
*>(this)->setMsaaDepthAttachment(NULL
);
1919 static_cast<FrameBufferObject
*>(this)->setMsaaStencilAttachment(NULL
);
1921 #ifdef OSG_MT_CPTR_ASPECT
1922 AspectOffsetStore oOffsets
;
1924 _pAspectStore
->fillOffsetArray(oOffsets
, this);
1927 #ifdef OSG_MT_CPTR_ASPECT
1928 _mfDrawBuffers
.terminateShare(Thread::getCurrentAspect(),