Show
Ignore:
Timestamp:
10/01/09 22:19:42 (5 years ago)
Author:
robert
Message:

Introduced new BufferObject? design + implementation in preperation of implementing a pool system for buffer objects

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/trunk/src/osgWrappers/osg/BufferObject.cpp

    r9775 r10600  
    2727#endif 
    2828 
     29BEGIN_ABSTRACT_OBJECT_REFLECTOR(osg::BufferData) 
     30        I_DeclaringFile("osg/BufferObject"); 
     31        I_BaseType(osg::Object); 
     32        I_Constructor0(____BufferData, 
     33                       "", 
     34                       ""); 
     35        I_ConstructorWithDefaults2(IN, const osg::BufferData &, bd, , IN, const osg::CopyOp &, copyop, osg::CopyOp::SHALLOW_COPY, 
     36                                   ____BufferData__C5_BufferData_R1__C5_CopyOp_R1, 
     37                                   "Copy constructor using CopyOp to manage deep vs shallow copy. ", 
     38                                   ""); 
     39        I_Method1(bool, isSameKindAs, IN, const osg::Object *, obj, 
     40                  Properties::VIRTUAL, 
     41                  __bool__isSameKindAs__C5_Object_P1, 
     42                  "", 
     43                  ""); 
     44        I_Method0(const char *, libraryName, 
     45                  Properties::VIRTUAL, 
     46                  __C5_char_P1__libraryName, 
     47                  "return the name of the object's library. ", 
     48                  "Must be defined by derived classes. The OpenSceneGraph convention is that the namespace of a library is the same as the library name. "); 
     49        I_Method0(const char *, className, 
     50                  Properties::VIRTUAL, 
     51                  __C5_char_P1__className, 
     52                  "return the name of the object's class type. ", 
     53                  "Must be defined by derived classes. "); 
     54        I_Method0(const GLvoid *, getDataPointer, 
     55                  Properties::PURE_VIRTUAL, 
     56                  __C5_GLvoid_P1__getDataPointer, 
     57                  "", 
     58                  ""); 
     59        I_Method0(unsigned int, getTotalDataSize, 
     60                  Properties::PURE_VIRTUAL, 
     61                  __unsigned_int__getTotalDataSize, 
     62                  "", 
     63                  ""); 
     64        I_Method1(void, setBufferObject, IN, osg::BufferObject *, bufferObject, 
     65                  Properties::NON_VIRTUAL, 
     66                  __void__setBufferObject__BufferObject_P1, 
     67                  "", 
     68                  ""); 
     69        I_Method0(osg::BufferObject *, getBufferObject, 
     70                  Properties::NON_VIRTUAL, 
     71                  __BufferObject_P1__getBufferObject, 
     72                  "", 
     73                  ""); 
     74        I_Method0(const osg::BufferObject *, getBufferObject, 
     75                  Properties::NON_VIRTUAL, 
     76                  __C5_BufferObject_P1__getBufferObject, 
     77                  "", 
     78                  ""); 
     79        I_Method1(void, setBufferIndex, IN, unsigned int, index, 
     80                  Properties::NON_VIRTUAL, 
     81                  __void__setBufferIndex__unsigned_int, 
     82                  "", 
     83                  ""); 
     84        I_Method0(unsigned int, getBufferIndex, 
     85                  Properties::NON_VIRTUAL, 
     86                  __unsigned_int__getBufferIndex, 
     87                  "", 
     88                  ""); 
     89        I_Method1(osg::GLBufferObject *, getGLBufferObject, IN, unsigned int, contextID, 
     90                  Properties::NON_VIRTUAL, 
     91                  __GLBufferObject_P1__getGLBufferObject__unsigned_int, 
     92                  "", 
     93                  ""); 
     94        I_Method1(osg::GLBufferObject *, getOrCreateGLBufferObject, IN, unsigned int, contextID, 
     95                  Properties::NON_VIRTUAL, 
     96                  __GLBufferObject_P1__getOrCreateGLBufferObject__unsigned_int, 
     97                  "", 
     98                  ""); 
     99        I_Method0(void, dirty, 
     100                  Properties::NON_VIRTUAL, 
     101                  __void__dirty, 
     102                  "Dirty the primitive, which increments the modified count, to force buffer objects to update. ", 
     103                  ""); 
     104        I_Method1(void, setModifiedCount, IN, unsigned int, value, 
     105                  Properties::NON_VIRTUAL, 
     106                  __void__setModifiedCount__unsigned_int, 
     107                  "Set the modified count value. ", 
     108                  ""); 
     109        I_Method0(unsigned int, getModifiedCount, 
     110                  Properties::NON_VIRTUAL, 
     111                  __unsigned_int__getModifiedCount, 
     112                  "Get modified count value. ", 
     113                  ""); 
     114        I_SimpleProperty(unsigned int, BufferIndex,  
     115                         __unsigned_int__getBufferIndex,  
     116                         __void__setBufferIndex__unsigned_int); 
     117        I_SimpleProperty(osg::BufferObject *, BufferObject,  
     118                         __BufferObject_P1__getBufferObject,  
     119                         __void__setBufferObject__BufferObject_P1); 
     120        I_SimpleProperty(const GLvoid *, DataPointer,  
     121                         __C5_GLvoid_P1__getDataPointer,  
     122                         0); 
     123        I_SimpleProperty(unsigned int, ModifiedCount,  
     124                         __unsigned_int__getModifiedCount,  
     125                         __void__setModifiedCount__unsigned_int); 
     126        I_SimpleProperty(unsigned int, TotalDataSize,  
     127                         __unsigned_int__getTotalDataSize,  
     128                         0); 
     129END_REFLECTOR 
     130 
    29131BEGIN_ABSTRACT_OBJECT_REFLECTOR(osg::BufferObject) 
    30132        I_DeclaringFile("osg/BufferObject"); 
     
    52154                  "return the name of the object's class type. ", 
    53155                  "Must be defined by derived classes. "); 
     156        I_Method1(void, setTarget, IN, GLenum, target, 
     157                  Properties::NON_VIRTUAL, 
     158                  __void__setTarget__GLenum, 
     159                  "", 
     160                  ""); 
     161        I_Method0(GLenum, getTarget, 
     162                  Properties::NON_VIRTUAL, 
     163                  __GLenum__getTarget, 
     164                  "", 
     165                  ""); 
    54166        I_Method1(void, setUsage, IN, GLenum, usage, 
    55167                  Properties::NON_VIRTUAL, 
     
    62174                  "Get the type of usage the buffer object has been set up for. ", 
    63175                  ""); 
    64         I_Method1(bool, isBufferObjectSupported, IN, unsigned int, contextID, 
    65                   Properties::NON_VIRTUAL, 
    66                   __bool__isBufferObjectSupported__unsigned_int, 
    67                   "", 
    68                   ""); 
    69         I_Method1(bool, isPBOSupported, IN, unsigned int, contextID, 
    70                   Properties::NON_VIRTUAL, 
    71                   __bool__isPBOSupported__unsigned_int, 
    72                   "", 
    73                   ""); 
    74         I_Method1(GLuint &, buffer, IN, unsigned int, contextID, 
    75                   Properties::NON_VIRTUAL, 
    76                   __GLuint_R1__buffer__unsigned_int, 
    77                   "", 
    78                   ""); 
    79         I_Method1(void, bindBuffer, IN, unsigned int, contextID, 
    80                   Properties::NON_VIRTUAL, 
    81                   __void__bindBuffer__unsigned_int, 
    82                   "", 
    83                   ""); 
    84         I_Method1(void, unbindBuffer, IN, unsigned int, contextID, 
    85                   Properties::VIRTUAL, 
    86                   __void__unbindBuffer__unsigned_int, 
    87                   "", 
    88                   ""); 
    89176        I_Method0(void, dirty, 
    90177                  Properties::NON_VIRTUAL, 
    91178                  __void__dirty, 
    92                   "", 
    93                   ""); 
    94         I_Method1(bool, isDirty, IN, unsigned int, contextID, 
    95                   Properties::NON_VIRTUAL, 
    96                   __bool__isDirty__unsigned_int, 
    97                   "", 
    98                   ""); 
    99         I_Method1(void, compileBuffer, IN, osg::State &, state, 
    100                   Properties::PURE_VIRTUAL, 
    101                   __void__compileBuffer__State_R1, 
    102179                  "", 
    103180                  ""); 
     
    112189                              "If State is non-zero, this function releases OpenGL objects for the specified graphics context. ", 
    113190                              "Otherwise, releases OpenGL objects for all graphics contexts. "); 
     191        I_Method1(unsigned int, addBufferData, IN, osg::BufferData *, bd, 
     192                  Properties::NON_VIRTUAL, 
     193                  __unsigned_int__addBufferData__BufferData_P1, 
     194                  "", 
     195                  ""); 
     196        I_Method1(void, removeBufferData, IN, unsigned int, index, 
     197                  Properties::NON_VIRTUAL, 
     198                  __void__removeBufferData__unsigned_int, 
     199                  "", 
     200                  ""); 
     201        I_Method1(void, removeBufferData, IN, osg::BufferData *, bd, 
     202                  Properties::NON_VIRTUAL, 
     203                  __void__removeBufferData__BufferData_P1, 
     204                  "", 
     205                  ""); 
     206        I_Method2(void, setBufferData, IN, unsigned int, index, IN, osg::BufferData *, bd, 
     207                  Properties::NON_VIRTUAL, 
     208                  __void__setBufferData__unsigned_int__BufferData_P1, 
     209                  "", 
     210                  ""); 
     211        I_Method1(osg::BufferData *, getBufferData, IN, unsigned int, index, 
     212                  Properties::NON_VIRTUAL, 
     213                  __BufferData_P1__getBufferData__unsigned_int, 
     214                  "", 
     215                  ""); 
     216        I_Method1(const osg::BufferData *, getBufferData, IN, unsigned int, index, 
     217                  Properties::NON_VIRTUAL, 
     218                  __C5_BufferData_P1__getBufferData__unsigned_int, 
     219                  "", 
     220                  ""); 
     221        I_Method0(unsigned int, getNumBufferData, 
     222                  Properties::NON_VIRTUAL, 
     223                  __unsigned_int__getNumBufferData, 
     224                  "", 
     225                  ""); 
     226        I_Method1(osg::GLBufferObject *, getGLBufferObject, IN, unsigned int, contextID, 
     227                  Properties::NON_VIRTUAL, 
     228                  __GLBufferObject_P1__getGLBufferObject__unsigned_int, 
     229                  "", 
     230                  ""); 
     231        I_Method1(osg::GLBufferObject *, getOrCreateGLBufferObject, IN, unsigned int, contextID, 
     232                  Properties::NON_VIRTUAL, 
     233                  __GLBufferObject_P1__getOrCreateGLBufferObject__unsigned_int, 
     234                  "", 
     235                  ""); 
     236        I_ArrayProperty(osg::BufferData *, BufferData,  
     237                        __BufferData_P1__getBufferData__unsigned_int,  
     238                        __void__setBufferData__unsigned_int__BufferData_P1,  
     239                        __unsigned_int__getNumBufferData,  
     240                        __unsigned_int__addBufferData__BufferData_P1,  
     241                        0,  
     242                        __void__removeBufferData__unsigned_int); 
     243        I_SimpleProperty(GLenum, Target,  
     244                         __GLenum__getTarget,  
     245                         __void__setTarget__GLenum); 
     246        I_SimpleProperty(GLenum, Usage,  
     247                         __GLenum__getUsage,  
     248                         __void__setUsage__GLenum); 
     249END_REFLECTOR 
     250 
     251BEGIN_OBJECT_REFLECTOR(osg::ElementBufferObject) 
     252        I_DeclaringFile("osg/BufferObject"); 
     253        I_BaseType(osg::BufferObject); 
     254        I_Constructor0(____ElementBufferObject, 
     255                       "", 
     256                       ""); 
     257        I_ConstructorWithDefaults2(IN, const osg::ElementBufferObject &, pbo, , IN, const osg::CopyOp &, copyop, osg::CopyOp::SHALLOW_COPY, 
     258                                   ____ElementBufferObject__C5_ElementBufferObject_R1__C5_CopyOp_R1, 
     259                                   "Copy constructor using CopyOp to manage deep vs shallow copy. ", 
     260                                   ""); 
     261        I_Method0(osg::Object *, cloneType, 
     262                  Properties::VIRTUAL, 
     263                  __osg_Object_P1__cloneType, 
     264                  "Clone the type of an object, with Object* return type. ", 
     265                  "Must be defined by derived classes. "); 
     266        I_Method1(osg::Object *, clone, IN, const osg::CopyOp &, x, 
     267                  Properties::VIRTUAL, 
     268                  __osg_Object_P1__clone__C5_osg_CopyOp_R1, 
     269                  "Clone an object, with Object* return type. ", 
     270                  "Must be defined by derived classes. "); 
     271        I_Method1(bool, isSameKindAs, IN, const osg::Object *, obj, 
     272                  Properties::VIRTUAL, 
     273                  __bool__isSameKindAs__C5_osg_Object_P1, 
     274                  "", 
     275                  ""); 
     276        I_Method0(const char *, libraryName, 
     277                  Properties::VIRTUAL, 
     278                  __C5_char_P1__libraryName, 
     279                  "return the name of the object's library. ", 
     280                  "Must be defined by derived classes. The OpenSceneGraph convention is that the namespace of a library is the same as the library name. "); 
     281        I_Method0(const char *, className, 
     282                  Properties::VIRTUAL, 
     283                  __C5_char_P1__className, 
     284                  "return the name of the object's class type. ", 
     285                  "Must be defined by derived classes. "); 
     286        I_Method1(unsigned int, addDrawElements, IN, osg::DrawElements *, PrimitiveSet, 
     287                  Properties::NON_VIRTUAL, 
     288                  __unsigned_int__addDrawElements__osg_DrawElements_P1, 
     289                  "", 
     290                  ""); 
     291        I_Method1(void, removeDrawElements, IN, osg::DrawElements *, PrimitiveSet, 
     292                  Properties::NON_VIRTUAL, 
     293                  __void__removeDrawElements__osg_DrawElements_P1, 
     294                  "", 
     295                  ""); 
     296        I_Method2(void, setDrawElements, IN, unsigned int, i, IN, osg::DrawElements *, PrimitiveSet, 
     297                  Properties::NON_VIRTUAL, 
     298                  __void__setDrawElements__unsigned_int__DrawElements_P1, 
     299                  "", 
     300                  ""); 
     301        I_Method1(osg::DrawElements *, getDrawElements, IN, unsigned int, i, 
     302                  Properties::NON_VIRTUAL, 
     303                  __DrawElements_P1__getDrawElements__unsigned_int, 
     304                  "", 
     305                  ""); 
     306        I_Method1(const osg::DrawElements *, getDrawElements, IN, unsigned int, i, 
     307                  Properties::NON_VIRTUAL, 
     308                  __C5_DrawElements_P1__getDrawElements__unsigned_int, 
     309                  "", 
     310                  ""); 
     311        I_IndexedProperty(osg::DrawElements *, DrawElements,  
     312                          __DrawElements_P1__getDrawElements__unsigned_int,  
     313                          __void__setDrawElements__unsigned_int__DrawElements_P1,  
     314                          0); 
     315END_REFLECTOR 
     316 
     317BEGIN_OBJECT_REFLECTOR(osg::GLBufferObject) 
     318        I_DeclaringFile("osg/BufferObject"); 
     319        I_BaseType(osg::Referenced); 
     320        I_ConstructorWithDefaults2(IN, unsigned int, contextID, , IN, osg::BufferObject *, bufferObject, 0, 
     321                                   ____GLBufferObject__unsigned_int__BufferObject_P1, 
     322                                   "", 
     323                                   ""); 
     324        I_Method1(void, setBufferObject, IN, osg::BufferObject *, bufferObject, 
     325                  Properties::NON_VIRTUAL, 
     326                  __void__setBufferObject__BufferObject_P1, 
     327                  "", 
     328                  ""); 
     329        I_Method0(osg::BufferObject *, getBufferObject, 
     330                  Properties::NON_VIRTUAL, 
     331                  __BufferObject_P1__getBufferObject, 
     332                  "", 
     333                  ""); 
     334        I_Method0(unsigned int, getContextID, 
     335                  Properties::NON_VIRTUAL, 
     336                  __unsigned_int__getContextID, 
     337                  "", 
     338                  ""); 
     339        I_Method0(GLuint &, getGLObjectID, 
     340                  Properties::NON_VIRTUAL, 
     341                  __GLuint_R1__getGLObjectID, 
     342                  "", 
     343                  ""); 
     344        I_Method0(GLuint, getGLObjectID, 
     345                  Properties::NON_VIRTUAL, 
     346                  __GLuint__getGLObjectID, 
     347                  "", 
     348                  ""); 
     349        I_Method1(GLsizeiptrARB, getOffset, IN, unsigned int, i, 
     350                  Properties::NON_VIRTUAL, 
     351                  __GLsizeiptrARB__getOffset__unsigned_int, 
     352                  "", 
     353                  ""); 
     354        I_Method0(void, bindBuffer, 
     355                  Properties::NON_VIRTUAL, 
     356                  __void__bindBuffer, 
     357                  "", 
     358                  ""); 
     359        I_Method0(void, unbindBuffer, 
     360                  Properties::NON_VIRTUAL, 
     361                  __void__unbindBuffer, 
     362                  "", 
     363                  ""); 
     364        I_Method0(bool, isDirty, 
     365                  Properties::NON_VIRTUAL, 
     366                  __bool__isDirty, 
     367                  "", 
     368                  ""); 
     369        I_Method0(void, dirty, 
     370                  Properties::NON_VIRTUAL, 
     371                  __void__dirty, 
     372                  "", 
     373                  ""); 
     374        I_Method0(void, clear, 
     375                  Properties::NON_VIRTUAL, 
     376                  __void__clear, 
     377                  "", 
     378                  ""); 
     379        I_Method0(void, compileBuffer, 
     380                  Properties::NON_VIRTUAL, 
     381                  __void__compileBuffer, 
     382                  "", 
     383                  ""); 
     384        I_Method0(void, deleteGLObject, 
     385                  Properties::NON_VIRTUAL, 
     386                  __void__deleteGLObject, 
     387                  "", 
     388                  ""); 
     389        I_Method1(void, assign, IN, osg::BufferObject *, bufferObject, 
     390                  Properties::NON_VIRTUAL, 
     391                  __void__assign__BufferObject_P1, 
     392                  "", 
     393                  ""); 
     394        I_Method0(bool, isPBOSupported, 
     395                  Properties::NON_VIRTUAL, 
     396                  __bool__isPBOSupported, 
     397                  "", 
     398                  ""); 
     399        I_StaticMethod2(osg::GLBufferObject *, createGLBufferObject, IN, unsigned int, contextID, IN, const osg::BufferObject *, bufferObject, 
     400                        __GLBufferObject_P1__createGLBufferObject__unsigned_int__C5_BufferObject_P1_S, 
     401                        "", 
     402                        ""); 
    114403        I_StaticMethod2(void, deleteBufferObject, IN, unsigned int, contextID, IN, GLuint, globj, 
    115404                        __void__deleteBufferObject__unsigned_int__GLuint_S, 
     
    124413                        "dicard all the cached display list which need to be deleted in the OpenGL context related to contextID. ", 
    125414                        "Note, unlike flush no OpenGL calls are made, instead the handles are all removed. this call is useful for when an OpenGL context has been destroyed. "); 
    126         I_StaticMethod2(osg::BufferObject::Extensions *, getExtensions, IN, unsigned int, contextID, IN, bool, createIfNotInitalized, 
     415        I_StaticMethod2(osg::GLBufferObject::Extensions *, getExtensions, IN, unsigned int, contextID, IN, bool, createIfNotInitalized, 
    127416                        __Extensions_P1__getExtensions__unsigned_int__bool_S, 
    128417                        "Function to call to get the extension of a specified context. ", 
    129418                        "If the Extension object for that context has not yet been created and the 'createIfNotInitalized' flag been set to false then returns NULL. If 'createIfNotInitalized' is true then the Extensions object is automatically created. However, in this case the extension object is only created with the graphics context associated with ContextID.. "); 
    130         I_StaticMethod2(void, setExtensions, IN, unsigned int, contextID, IN, osg::BufferObject::Extensions *, extensions, 
     419        I_StaticMethod2(void, setExtensions, IN, unsigned int, contextID, IN, osg::GLBufferObject::Extensions *, extensions, 
    131420                        __void__setExtensions__unsigned_int__Extensions_P1_S, 
    132421                        "setExtensions allows users to override the extensions across graphics contexts. ", 
    133422                        "typically used when you have different extensions supported across graphics pipes but need to ensure that they all use the same low common denominator extensions. "); 
    134         I_SimpleProperty(GLenum, Usage,  
    135                          __GLenum__getUsage,  
    136                          __void__setUsage__GLenum); 
    137 END_REFLECTOR 
    138  
    139 BEGIN_VALUE_REFLECTOR(osg::BufferObject::BufferEntry) 
     423        I_SimpleProperty(osg::BufferObject *, BufferObject,  
     424                         __BufferObject_P1__getBufferObject,  
     425                         __void__setBufferObject__BufferObject_P1); 
     426        I_SimpleProperty(unsigned int, ContextID,  
     427                         __unsigned_int__getContextID,  
     428                         0); 
     429        I_SimpleProperty(GLuint, GLObjectID,  
     430                         __GLuint__getGLObjectID,  
     431                         0); 
     432        I_PublicMemberProperty(osg::GLBufferObject::Extensions *, _extensions); 
     433END_REFLECTOR 
     434 
     435BEGIN_VALUE_REFLECTOR(osg::GLBufferObject::BufferEntry) 
    140436        I_DeclaringFile("osg/BufferObject"); 
    141437        I_Constructor0(____BufferEntry, 
    142438                       "", 
    143439                       ""); 
    144         I_Constructor1(IN, const osg::BufferObject::BufferEntry &, be, 
     440        I_Constructor1(IN, const osg::GLBufferObject::BufferEntry &, rhs, 
    145441                       Properties::NON_EXPLICIT, 
    146442                       ____BufferEntry__C5_BufferEntry_R1, 
    147443                       "", 
    148444                       ""); 
    149         I_PublicMemberProperty(osg::buffered_value< unsigned int >, modifiedCount); 
    150         I_PublicMemberProperty(unsigned int, dataSize); 
    151         I_PublicMemberProperty(unsigned int, offset); 
    152 END_REFLECTOR 
    153  
    154 TYPE_NAME_ALIAS(std::pair< osg::BufferObject::BufferEntry COMMA  osg::DrawElements * >, osg::ElementBufferObject::BufferEntryDrawElementsPair) 
    155  
    156 TYPE_NAME_ALIAS(std::vector< osg::ElementBufferObject::BufferEntryDrawElementsPair >, osg::ElementBufferObject::BufferEntryDrawElementsPairs) 
    157  
    158 BEGIN_OBJECT_REFLECTOR(osg::ElementBufferObject) 
    159         I_DeclaringFile("osg/BufferObject"); 
    160         I_BaseType(osg::BufferObject); 
    161         I_Constructor0(____ElementBufferObject, 
    162                        "", 
    163                        ""); 
    164         I_ConstructorWithDefaults2(IN, const osg::ElementBufferObject &, pbo, , IN, const osg::CopyOp &, copyop, osg::CopyOp::SHALLOW_COPY, 
    165                                    ____ElementBufferObject__C5_ElementBufferObject_R1__C5_CopyOp_R1, 
    166                                    "Copy constructor using CopyOp to manage deep vs shallow copy. ", 
    167                                    ""); 
    168         I_Method0(osg::Object *, cloneType, 
    169                   Properties::VIRTUAL, 
    170                   __osg_Object_P1__cloneType, 
    171                   "Clone the type of an object, with Object* return type. ", 
    172                   "Must be defined by derived classes. "); 
    173         I_Method1(osg::Object *, clone, IN, const osg::CopyOp &, x, 
    174                   Properties::VIRTUAL, 
    175                   __osg_Object_P1__clone__C5_osg_CopyOp_R1, 
    176                   "Clone an object, with Object* return type. ", 
    177                   "Must be defined by derived classes. "); 
    178         I_Method1(bool, isSameKindAs, IN, const osg::Object *, obj, 
    179                   Properties::VIRTUAL, 
    180                   __bool__isSameKindAs__C5_osg_Object_P1, 
    181                   "", 
    182                   ""); 
    183         I_Method0(const char *, libraryName, 
    184                   Properties::VIRTUAL, 
    185                   __C5_char_P1__libraryName, 
    186                   "return the name of the object's library. ", 
    187                   "Must be defined by derived classes. The OpenSceneGraph convention is that the namespace of a library is the same as the library name. "); 
    188         I_Method0(const char *, className, 
    189                   Properties::VIRTUAL, 
    190                   __C5_char_P1__className, 
    191                   "return the name of the object's class type. ", 
    192                   "Must be defined by derived classes. "); 
    193         I_Method1(unsigned int, addDrawElements, IN, osg::DrawElements *, PrimitiveSet, 
    194                   Properties::NON_VIRTUAL, 
    195                   __unsigned_int__addDrawElements__osg_DrawElements_P1, 
    196                   "", 
    197                   ""); 
    198         I_Method1(void, removeDrawElements, IN, osg::DrawElements *, PrimitiveSet, 
    199                   Properties::NON_VIRTUAL, 
    200                   __void__removeDrawElements__osg_DrawElements_P1, 
    201                   "", 
    202                   ""); 
    203         I_Method2(void, setDrawElements, IN, unsigned int, i, IN, osg::DrawElements *, PrimitiveSet, 
    204                   Properties::NON_VIRTUAL, 
    205                   __void__setDrawElements__unsigned_int__DrawElements_P1, 
    206                   "", 
    207                   ""); 
    208         I_Method1(osg::DrawElements *, getDrawElements, IN, unsigned int, i, 
    209                   Properties::NON_VIRTUAL, 
    210                   __DrawElements_P1__getDrawElements__unsigned_int, 
    211                   "", 
    212                   ""); 
    213         I_Method1(const osg::DrawElements *, getDrawElements, IN, unsigned int, i, 
    214                   Properties::NON_VIRTUAL, 
    215                   __C5_DrawElements_P1__getDrawElements__unsigned_int, 
    216                   "", 
    217                   ""); 
    218         I_Method1(const GLvoid *, getOffset, IN, unsigned int, i, 
    219                   Properties::NON_VIRTUAL, 
    220                   __C5_GLvoid_P1__getOffset__unsigned_int, 
    221                   "", 
    222                   ""); 
    223         I_Method1(void, compileBuffer, IN, osg::State &, state, 
    224                   Properties::VIRTUAL, 
    225                   __void__compileBuffer__State_R1, 
    226                   "", 
    227                   ""); 
    228         I_Method1(void, resizeGLObjectBuffers, IN, unsigned int, maxSize, 
    229                   Properties::VIRTUAL, 
    230                   __void__resizeGLObjectBuffers__unsigned_int, 
    231                   "Resize any per context GLObject buffers to specified size. ", 
    232                   ""); 
    233         I_IndexedProperty(osg::DrawElements *, DrawElements,  
    234                           __DrawElements_P1__getDrawElements__unsigned_int,  
    235                           __void__setDrawElements__unsigned_int__DrawElements_P1,  
    236                           0); 
    237 END_REFLECTOR 
    238  
    239 TYPE_NAME_ALIAS(std::pair< osg::BufferObject::BufferEntry COMMA  osg::Image * >, osg::PixelBufferObject::BufferEntryImagePair) 
     445        I_PublicMemberProperty(unsigned int, modifiedCount); 
     446        I_PublicMemberProperty(GLsizeiptrARB, dataSize); 
     447        I_PublicMemberProperty(GLsizeiptrARB, offset); 
     448        I_PublicMemberProperty(osg::BufferData *, dataSource); 
     449END_REFLECTOR 
    240450 
    241451BEGIN_OBJECT_REFLECTOR(osg::PixelBufferObject) 
     
    291501                  "", 
    292502                  ""); 
    293         I_Method0(unsigned int, offset, 
    294                   Properties::NON_VIRTUAL, 
    295                   __unsigned_int__offset, 
    296                   "", 
    297                   ""); 
    298         I_Method1(void, compileBuffer, IN, osg::State &, state, 
    299                   Properties::VIRTUAL, 
    300                   __void__compileBuffer__State_R1, 
    301                   "", 
    302                   ""); 
    303         I_Method1(void, resizeGLObjectBuffers, IN, unsigned int, maxSize, 
    304                   Properties::VIRTUAL, 
    305                   __void__resizeGLObjectBuffers__unsigned_int, 
    306                   "Resize any per context GLObject buffers to specified size. ", 
     503        I_Method1(bool, isPBOSupported, IN, unsigned int, contextID, 
     504                  Properties::NON_VIRTUAL, 
     505                  __bool__isPBOSupported__unsigned_int, 
     506                  "", 
    307507                  ""); 
    308508        I_SimpleProperty(osg::Image *, Image,  
     
    398598END_REFLECTOR 
    399599 
    400 TYPE_NAME_ALIAS(std::pair< osg::BufferObject::BufferEntry COMMA  osg::Array * >, osg::VertexBufferObject::BufferEntryArrayPair) 
    401  
    402 TYPE_NAME_ALIAS(std::vector< osg::VertexBufferObject::BufferEntryArrayPair >, osg::VertexBufferObject::BufferEntryArrayPairs) 
    403  
    404600BEGIN_OBJECT_REFLECTOR(osg::VertexBufferObject) 
    405601        I_DeclaringFile("osg/BufferObject"); 
     
    462658                  "", 
    463659                  ""); 
    464         I_Method1(const GLvoid *, getOffset, IN, unsigned int, i, 
    465                   Properties::NON_VIRTUAL, 
    466                   __C5_GLvoid_P1__getOffset__unsigned_int, 
    467                   "", 
    468                   ""); 
    469         I_Method1(void, compileBuffer, IN, osg::State &, state, 
    470                   Properties::VIRTUAL, 
    471                   __void__compileBuffer__State_R1, 
    472                   "", 
    473                   ""); 
    474         I_Method1(void, resizeGLObjectBuffers, IN, unsigned int, maxSize, 
    475                   Properties::VIRTUAL, 
    476                   __void__resizeGLObjectBuffers__unsigned_int, 
    477                   "Resize any per context GLObject buffers to specified size. ", 
    478                   ""); 
    479660        I_IndexedProperty(osg::Array *, Array,  
    480661                          __Array_P1__getArray__unsigned_int,  
     
    483664END_REFLECTOR 
    484665 
    485 STD_PAIR_REFLECTOR(std::pair< osg::BufferObject::BufferEntry COMMA  osg::Array * >) 
    486  
    487 STD_PAIR_REFLECTOR(std::pair< osg::BufferObject::BufferEntry COMMA  osg::DrawElements * >) 
    488  
    489 STD_PAIR_REFLECTOR(std::pair< osg::BufferObject::BufferEntry COMMA  osg::Image * >) 
    490  
    491 STD_VECTOR_REFLECTOR(std::vector< osg::ElementBufferObject::BufferEntryDrawElementsPair >) 
    492  
    493 STD_VECTOR_REFLECTOR(std::vector< osg::VertexBufferObject::BufferEntryArrayPair >) 
    494