OpenSceneGraph 3.6.5
Array
Go to the documentation of this file.
1/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
2 *
3 * This library is open source and may be redistributed and/or modified under
4 * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
5 * (at your option) any later version. The full license is in LICENSE file
6 * included with this distribution, and on the openscenegraph.org website.
7 *
8 * This library is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * OpenSceneGraph Public License for more details.
12*/
13
14#ifndef OSG_ARRAY
15#define OSG_ARRAY 1
16
17#include <osg/MixinVector>
18
19#include <osg/Vec2b>
20#include <osg/Vec3b>
21#include <osg/Vec4b>
22#include <osg/Vec2s>
23#include <osg/Vec3s>
24#include <osg/Vec4s>
25#include <osg/Vec2i>
26#include <osg/Vec3i>
27#include <osg/Vec4i>
28#include <osg/Vec2ub>
29#include <osg/Vec3ub>
30#include <osg/Vec4ub>
31#include <osg/Vec2us>
32#include <osg/Vec3us>
33#include <osg/Vec4us>
34#include <osg/Vec2ui>
35#include <osg/Vec3ui>
36#include <osg/Vec4ui>
37#include <osg/Vec2>
38#include <osg/Vec3>
39#include <osg/Vec4>
40#include <osg/Vec2d>
41#include <osg/Vec3d>
42#include <osg/Vec4d>
43#include <osg/Matrix>
44#include <osg/Matrixd>
45#include <osg/Quat>
46
47#include <osg/BufferObject>
48
49#include <osg/Object>
50#include <osg/GL>
51
52namespace osg {
53
54class ArrayVisitor;
55class ConstArrayVisitor;
56
57class ValueVisitor;
58class ConstValueVisitor;
59
61{
62
63 public:
64
66 enum Type
67 {
69
73
77
80
84
88
92
96
100
104
108
112
115
117
120
122 // If new array types are added, update this and
123 // update Array::className() in src/osg/Array.cpp.
124 // Array::Type values are from ArrayType to
125 // LastArrayType, inclusive.
126 };
127
137
138 Array(Type arrayType=ArrayType,GLint dataSize=0,GLenum dataType=0, Binding binding=BIND_UNDEFINED):
139 _arrayType(arrayType),
140 _dataSize(dataSize),
141 _dataType(dataType),
142 _binding(binding),
143 _normalize(false),
144 _preserveDataType(false) {}
145
146 Array(const Array& array,const CopyOp& copyop=CopyOp::SHALLOW_COPY):
147 BufferData(array,copyop),
148 _arrayType(array._arrayType),
149 _dataSize(array._dataSize),
150 _dataType(array._dataType),
151 _binding(array._binding),
152 _normalize(array._normalize),
154
155 virtual bool isSameKindAs(const Object* obj) const { return dynamic_cast<const Array*>(obj)!=NULL; }
156 virtual const char* libraryName() const { return "osg"; }
157
160 virtual const char* className() const;
161
162 virtual void accept(ArrayVisitor&) = 0;
163 virtual void accept(ConstArrayVisitor&) const = 0;
164
165 virtual void accept(unsigned int index,ValueVisitor&) = 0;
166 virtual void accept(unsigned int index,ConstValueVisitor&) const = 0;
167
170 virtual int compare(unsigned int lhs,unsigned int rhs) const = 0;
171
172 Type getType() const { return _arrayType; }
173 GLint getDataSize() const { return _dataSize; }
174 GLenum getDataType() const { return _dataType; }
175
176 virtual osg::Array* asArray() { return this; }
177 virtual const osg::Array* asArray() const { return this; }
178
179 virtual unsigned int getElementSize() const = 0;
180 virtual const GLvoid* getDataPointer() const = 0;
181 virtual const GLvoid* getDataPointer(unsigned int index) const = 0;
182 virtual unsigned int getTotalDataSize() const = 0;
183 virtual unsigned int getNumElements() const = 0;
184 virtual void reserveArray(unsigned int num) = 0;
185 virtual void resizeArray(unsigned int num) = 0;
186
187
189 void setBinding(Binding binding) { _binding = binding; }
190
192 Binding getBinding() const { return _binding; }
193
194
196 void setNormalize(bool normalize) { _normalize = normalize; }
197
199 bool getNormalize() const { return _normalize; }
200
201
203 void setPreserveDataType(bool preserve) { _preserveDataType = preserve; }
204
206 bool getPreserveDataType() const { return _preserveDataType; }
207
208
210 virtual void trim() {}
211
214
217
219 inline const osg::VertexBufferObject* getVertexBufferObject() const { return dynamic_cast<const osg::VertexBufferObject*>(_bufferObject.get()); }
220
221 protected:
222
223 virtual ~Array() {}
224
227 GLenum _dataType;
231};
232
234inline osg::Array::Binding getBinding(const osg::Array* array) { return array ? array->getBinding() : osg::Array::BIND_OFF; }
235
237inline bool getNormalize(const osg::Array* array) { return array ? array->getNormalize() : false; }
238
239
241template<typename T, Array::Type ARRAYTYPE, int DataSize, int DataType>
242class TemplateArray : public Array, public MixinVector<T>
243{
244 public:
245
246 TemplateArray(Binding binding=BIND_UNDEFINED) : Array(ARRAYTYPE,DataSize,DataType, binding) {}
247
249 Array(ta,copyop),
250 MixinVector<T>(ta) {}
251
252 TemplateArray(unsigned int no) :
253 Array(ARRAYTYPE,DataSize,DataType),
254 MixinVector<T>(no) {}
255
256 TemplateArray(unsigned int no,const T* ptr) :
257 Array(ARRAYTYPE,DataSize,DataType),
258 MixinVector<T>(ptr,ptr+no) {}
259
260 TemplateArray(Binding binding, unsigned int no) :
261 Array(ARRAYTYPE,DataSize,DataType, binding),
262 MixinVector<T>(no) {}
263
264 TemplateArray(Binding binding, unsigned int no,const T* ptr) :
265 Array(ARRAYTYPE,DataSize,DataType, binding),
266 MixinVector<T>(ptr,ptr+no) {}
267
268 template <class InputIterator>
269 TemplateArray(InputIterator first,InputIterator last) :
270 Array(ARRAYTYPE,DataSize,DataType),
271 MixinVector<T>(first,last) {}
272
274 {
275 if (this==&array) return *this;
276 this->assign(array.begin(),array.end());
277 return *this;
278 }
279
280 virtual Object* cloneType() const { return new TemplateArray(); }
281 virtual Object* clone(const CopyOp& copyop) const { return new TemplateArray(*this,copyop); }
282
283 inline virtual void accept(ArrayVisitor& av);
284 inline virtual void accept(ConstArrayVisitor& av) const;
285
286 inline virtual void accept(unsigned int index,ValueVisitor& vv);
287 inline virtual void accept(unsigned int index,ConstValueVisitor& vv) const;
288
289 virtual int compare(unsigned int lhs,unsigned int rhs) const
290 {
291 const T& elem_lhs = (*this)[lhs];
292 const T& elem_rhs = (*this)[rhs];
293 if (elem_lhs<elem_rhs) return -1;
294 if (elem_rhs<elem_lhs) return 1;
295 return 0;
296 }
297
299 virtual void trim()
300 {
301 MixinVector<T>( *this ).swap( *this );
302 }
303
304 virtual unsigned int getElementSize() const { return sizeof(ElementDataType); }
305 virtual const GLvoid* getDataPointer() const { if (!this->empty()) return &this->front(); else return 0; }
306 virtual const GLvoid* getDataPointer(unsigned int index) const { if (!this->empty()) return &((*this)[index]); else return 0; }
307 virtual unsigned int getTotalDataSize() const { return static_cast<unsigned int>(this->size()*sizeof(ElementDataType)); }
308 virtual unsigned int getNumElements() const { return static_cast<unsigned int>(this->size()); }
309 virtual void reserveArray(unsigned int num) { this->reserve(num); }
310 virtual void resizeArray(unsigned int num) { this->resize(num); }
311
312 typedef T ElementDataType; // expose T
313
314 protected:
315
316 virtual ~TemplateArray() {}
317};
318
320{
321
322 public:
323
324 IndexArray(Type arrayType=ArrayType,GLint dataSize=0,GLenum dataType=0):
325 Array(arrayType,dataSize,dataType) {}
326
327 IndexArray(const Array& array,const CopyOp& copyop=CopyOp::SHALLOW_COPY):
328 Array(array,copyop) {}
329
330 virtual bool isSameKindAs(const Object* obj) const { return dynamic_cast<const IndexArray*>(obj)!=NULL; }
331
332 virtual unsigned int index(unsigned int pos) const = 0;
333
334 protected:
335
336 virtual ~IndexArray() {}
337};
338
339template<typename T, Array::Type ARRAYTYPE, int DataSize, int DataType>
341{
342 public:
343
344 TemplateIndexArray() : IndexArray(ARRAYTYPE,DataSize,DataType) {}
345
347 IndexArray(ta,copyop),
348 MixinVector<T>(ta) {}
349
350 TemplateIndexArray(unsigned int no) :
351 IndexArray(ARRAYTYPE,DataSize,DataType),
352 MixinVector<T>(no) {}
353
354 TemplateIndexArray(unsigned int no,T* ptr) :
355 IndexArray(ARRAYTYPE,DataSize,DataType),
356 MixinVector<T>(ptr,ptr+no) {}
357
358 template <class InputIterator>
359 TemplateIndexArray(InputIterator first,InputIterator last) :
360 IndexArray(ARRAYTYPE,DataSize,DataType),
361 MixinVector<T>(first,last) {}
362
364 {
365 if (this==&array) return *this;
366 this->assign(array.begin(),array.end());
367 return *this;
368 }
369
370 virtual Object* cloneType() const { return new TemplateIndexArray(); }
371 virtual Object* clone(const CopyOp& copyop) const { return new TemplateIndexArray(*this,copyop); }
372
373 inline virtual void accept(ArrayVisitor& av);
374 inline virtual void accept(ConstArrayVisitor& av) const;
375
376 inline virtual void accept(unsigned int index,ValueVisitor& vv);
377 inline virtual void accept(unsigned int index,ConstValueVisitor& vv) const;
378
379 virtual int compare(unsigned int lhs,unsigned int rhs) const
380 {
381 const T& elem_lhs = (*this)[lhs];
382 const T& elem_rhs = (*this)[rhs];
383 if (elem_lhs<elem_rhs) return -1;
384 if (elem_rhs<elem_lhs) return 1;
385 return 0;
386 }
387
389 virtual void trim()
390 {
391 MixinVector<T>( *this ).swap( *this );
392 }
393
394 virtual unsigned int getElementSize() const { return sizeof(ElementDataType); }
395 virtual const GLvoid* getDataPointer() const { if (!this->empty()) return &this->front(); else return 0; }
396 virtual const GLvoid* getDataPointer(unsigned int index) const { if (!this->empty()) return &((*this)[index]); else return 0; }
397 virtual unsigned int getTotalDataSize() const { return static_cast<unsigned int>(this->size()*sizeof(T)); }
398 virtual unsigned int getNumElements() const { return static_cast<unsigned int>(this->size()); }
399 virtual void reserveArray(unsigned int num) { this->reserve(num); }
400 virtual void resizeArray(unsigned int num) { this->resize(num); }
401
402 virtual unsigned int index(unsigned int pos) const { return (*this)[pos]; }
403
404 typedef T ElementDataType; // expose T
405
406 protected:
407
409};
410
411// The predefined array types
412
416
420
423
427
431
435
439
443
447
451
455
458
460
463
465{
466 public:
468 virtual ~ArrayVisitor() {}
469
470 virtual void apply(Array&) {}
471
472 virtual void apply(ByteArray&) {}
473 virtual void apply(ShortArray&) {}
474 virtual void apply(IntArray&) {}
475
476 virtual void apply(UByteArray&) {}
477 virtual void apply(UShortArray&) {}
478 virtual void apply(UIntArray&) {}
479
480 virtual void apply(FloatArray&) {}
481 virtual void apply(DoubleArray&) {}
482
483
484 virtual void apply(Vec2bArray&) {}
485 virtual void apply(Vec3bArray&) {}
486 virtual void apply(Vec4bArray&) {}
487
488 virtual void apply(Vec2sArray&) {}
489 virtual void apply(Vec3sArray&) {}
490 virtual void apply(Vec4sArray&) {}
491
492 virtual void apply(Vec2iArray&) {}
493 virtual void apply(Vec3iArray&) {}
494 virtual void apply(Vec4iArray&) {}
495
496 virtual void apply(Vec2ubArray&) {}
497 virtual void apply(Vec3ubArray&) {}
498 virtual void apply(Vec4ubArray&) {}
499
500 virtual void apply(Vec2usArray&) {}
501 virtual void apply(Vec3usArray&) {}
502 virtual void apply(Vec4usArray&) {}
503
504 virtual void apply(Vec2uiArray&) {}
505 virtual void apply(Vec3uiArray&) {}
506 virtual void apply(Vec4uiArray&) {}
507
508 virtual void apply(Vec2Array&) {}
509 virtual void apply(Vec3Array&) {}
510 virtual void apply(Vec4Array&) {}
511
512 virtual void apply(Vec2dArray&) {}
513 virtual void apply(Vec3dArray&) {}
514 virtual void apply(Vec4dArray&) {}
515
516 virtual void apply(MatrixfArray&) {}
517 virtual void apply(MatrixdArray&) {}
518
519 virtual void apply(UInt64Array&) {}
520 virtual void apply(Int64Array&) {}
521};
522
524{
525 public:
528
529 virtual void apply(const Array&) {}
530
531 virtual void apply(const ByteArray&) {}
532 virtual void apply(const ShortArray&) {}
533 virtual void apply(const IntArray&) {}
534
535 virtual void apply(const UByteArray&) {}
536 virtual void apply(const UShortArray&) {}
537 virtual void apply(const UIntArray&) {}
538
539 virtual void apply(const FloatArray&) {}
540 virtual void apply(const DoubleArray&) {}
541
542
543 virtual void apply(const Vec2bArray&) {}
544 virtual void apply(const Vec3bArray&) {}
545 virtual void apply(const Vec4bArray&) {}
546
547 virtual void apply(const Vec2sArray&) {}
548 virtual void apply(const Vec3sArray&) {}
549 virtual void apply(const Vec4sArray&) {}
550
551 virtual void apply(const Vec2iArray&) {}
552 virtual void apply(const Vec3iArray&) {}
553 virtual void apply(const Vec4iArray&) {}
554
555 virtual void apply(const Vec2ubArray&) {}
556 virtual void apply(const Vec3ubArray&) {}
557 virtual void apply(const Vec4ubArray&) {}
558
559 virtual void apply(const Vec2usArray&) {}
560 virtual void apply(const Vec3usArray&) {}
561 virtual void apply(const Vec4usArray&) {}
562
563 virtual void apply(const Vec2uiArray&) {}
564 virtual void apply(const Vec3uiArray&) {}
565 virtual void apply(const Vec4uiArray&) {}
566
567 virtual void apply(const Vec2Array&) {}
568 virtual void apply(const Vec3Array&) {}
569 virtual void apply(const Vec4Array&) {}
570
571 virtual void apply(const Vec2dArray&) {}
572 virtual void apply(const Vec3dArray&) {}
573 virtual void apply(const Vec4dArray&) {}
574
575 virtual void apply(const MatrixfArray&) {}
576 virtual void apply(const MatrixdArray&) {}
577
578 virtual void apply(const UInt64Array&) {}
579 virtual void apply(const Int64Array&) {}
580};
581
582
584{
585 public:
587 virtual ~ValueVisitor() {}
588
589 virtual void apply(GLbyte&) {}
590 virtual void apply(GLshort&) {}
591 virtual void apply(GLint&) {}
592
593 virtual void apply(GLushort&) {}
594 virtual void apply(GLubyte&) {}
595 virtual void apply(GLuint&) {}
596
597 virtual void apply(GLfloat&) {}
598 virtual void apply(GLdouble&) {}
599
600
601 virtual void apply(Vec2b&) {}
602 virtual void apply(Vec3b&) {}
603 virtual void apply(Vec4b&) {}
604
605 virtual void apply(Vec2s&) {}
606 virtual void apply(Vec3s&) {}
607 virtual void apply(Vec4s&) {}
608
609 virtual void apply(Vec2i&) {}
610 virtual void apply(Vec3i&) {}
611 virtual void apply(Vec4i&) {}
612
613 virtual void apply(Vec2ub&) {}
614 virtual void apply(Vec3ub&) {}
615 virtual void apply(Vec4ub&) {}
616
617 virtual void apply(Vec2us&) {}
618 virtual void apply(Vec3us&) {}
619 virtual void apply(Vec4us&) {}
620
621 virtual void apply(Vec2ui&) {}
622 virtual void apply(Vec3ui&) {}
623 virtual void apply(Vec4ui&) {}
624
625 virtual void apply(Vec2&) {}
626 virtual void apply(Vec3&) {}
627 virtual void apply(Vec4&) {}
628
629 virtual void apply(Vec2d&) {}
630 virtual void apply(Vec3d&) {}
631 virtual void apply(Vec4d&) {}
632
633 virtual void apply(Matrixf&) {}
634 virtual void apply(Matrixd&) {}
635
636 virtual void apply(Quat&) {}
637
638 virtual void apply(GLuint64&){}
639 virtual void apply(GLint64&){}
640};
641
643{
644 public:
647
648 virtual void apply(const GLbyte&) {}
649 virtual void apply(const GLshort&) {}
650 virtual void apply(const GLint&) {}
651
652 virtual void apply(const GLushort&) {}
653 virtual void apply(const GLubyte&) {}
654 virtual void apply(const GLuint&) {}
655
656 virtual void apply(const GLfloat&) {}
657 virtual void apply(const GLdouble&) {}
658
659
660 virtual void apply(const Vec2b&) {}
661 virtual void apply(const Vec3b&) {}
662 virtual void apply(const Vec4b&) {}
663
664 virtual void apply(const Vec2s&) {}
665 virtual void apply(const Vec3s&) {}
666 virtual void apply(const Vec4s&) {}
667
668 virtual void apply(const Vec2i&) {}
669 virtual void apply(const Vec3i&) {}
670 virtual void apply(const Vec4i&) {}
671
672 virtual void apply(const Vec2ub&) {}
673 virtual void apply(const Vec3ub&) {}
674 virtual void apply(const Vec4ub&) {}
675
676 virtual void apply(const Vec2us&) {}
677 virtual void apply(const Vec3us&) {}
678 virtual void apply(const Vec4us&) {}
679
680 virtual void apply(const Vec2ui&) {}
681 virtual void apply(const Vec3ui&) {}
682 virtual void apply(const Vec4ui&) {}
683
684 virtual void apply(const Vec2&) {}
685 virtual void apply(const Vec3&) {}
686 virtual void apply(const Vec4&) {}
687
688 virtual void apply(const Vec2d&) {}
689 virtual void apply(const Vec3d&) {}
690 virtual void apply(const Vec4d&) {}
691
692 virtual void apply(const Matrixf&) {}
693 virtual void apply(const Matrixd&) {}
694
695 virtual void apply(const Quat&) {}
696
697 virtual void apply(const GLuint64&){}
698 virtual void apply(const GLint64&){}
699};
700
701template<typename T, Array::Type ARRAYTYPE, int DataSize, int DataType>
703
704template<typename T, Array::Type ARRAYTYPE, int DataSize, int DataType>
706
707template<typename T, Array::Type ARRAYTYPE, int DataSize, int DataType>
708inline void TemplateArray<T,ARRAYTYPE,DataSize,DataType>::accept(unsigned int index,ValueVisitor& vv) { vv.apply( (*this)[index] ); }
709
710template<typename T, Array::Type ARRAYTYPE, int DataSize, int DataType>
711inline void TemplateArray<T,ARRAYTYPE,DataSize,DataType>::accept(unsigned int index,ConstValueVisitor& vv) const { vv.apply( (*this)[index] );}
712
713template<typename T, Array::Type ARRAYTYPE, int DataSize, int DataType>
715
716template<typename T, Array::Type ARRAYTYPE, int DataSize, int DataType>
718
719template<typename T, Array::Type ARRAYTYPE, int DataSize, int DataType>
721
722template<typename T, Array::Type ARRAYTYPE, int DataSize, int DataType>
724
725}
726
727#endif
The core osg library provides the basic scene graph classes such as Nodes, State and Drawables,...
Definition AlphaFunc:19
TemplateIndexArray< GLuint, Array::UIntArrayType, 1, GL_UNSIGNED_INT > UIntArray
Definition Array:419
TemplateArray< Vec2ub, Array::Vec2ubArrayType, 2, GL_UNSIGNED_BYTE > Vec2ubArray
Definition Array:436
TemplateArray< Vec2, Array::Vec2ArrayType, 2, GL_FLOAT > Vec2Array
Definition Array:448
TemplateArray< Vec4, Array::Vec4ArrayType, 4, GL_FLOAT > Vec4Array
Definition Array:450
TemplateArray< Quat, Array::QuatArrayType, 4, GL_DOUBLE > QuatArray
Definition Array:459
TemplateArray< Vec3b, Array::Vec3bArrayType, 3, GL_BYTE > Vec3bArray
Definition Array:425
TemplateArray< Vec4i, Array::Vec4iArrayType, 4, GL_INT > Vec4iArray
Definition Array:434
TemplateArray< Vec3ub, Array::Vec3ubArrayType, 3, GL_UNSIGNED_BYTE > Vec3ubArray
Definition Array:437
TemplateIndexArray< GLshort, Array::ShortArrayType, 1, GL_SHORT > ShortArray
Definition Array:414
Vec2f Vec2
Definition Vec2:21
TemplateArray< Vec3us, Array::Vec3usArrayType, 3, GL_UNSIGNED_SHORT > Vec3usArray
Definition Array:441
TemplateArray< Vec4us, Array::Vec4usArrayType, 4, GL_UNSIGNED_SHORT > Vec4usArray
Definition Array:442
osg::Array::Binding getBinding(const osg::Array *array)
convenience function for getting the binding of array via a ptr that may be null.
Definition Array:234
TemplateArray< Vec3d, Array::Vec3dArrayType, 3, GL_DOUBLE > Vec3dArray
Definition Array:453
TemplateArray< Vec2i, Array::Vec2iArrayType, 2, GL_INT > Vec2iArray
Definition Array:432
TemplateArray< Vec3, Array::Vec3ArrayType, 3, GL_FLOAT > Vec3Array
Definition Array:449
Vec3f Vec3
Definition Vec3:21
TemplateArray< GLfloat, Array::FloatArrayType, 1, GL_FLOAT > FloatArray
Definition Array:421
TemplateArray< Vec2us, Array::Vec2usArrayType, 2, GL_UNSIGNED_SHORT > Vec2usArray
Definition Array:440
TemplateArray< Vec2ui, Array::Vec2uiArrayType, 2, GL_UNSIGNED_INT > Vec2uiArray
Definition Array:444
TemplateArray< Vec2b, Array::Vec2bArrayType, 2, GL_BYTE > Vec2bArray
Definition Array:424
TemplateIndexArray< GLushort, Array::UShortArrayType, 1, GL_UNSIGNED_SHORT > UShortArray
Definition Array:418
TemplateArray< GLdouble, Array::DoubleArrayType, 1, GL_DOUBLE > DoubleArray
Definition Array:422
TemplateArray< Vec4d, Array::Vec4dArrayType, 4, GL_DOUBLE > Vec4dArray
Definition Array:454
bool getNormalize(const osg::Array *array)
convenience function for getting the binding of array via a ptr that may be null.
Definition Array:237
TemplateArray< Vec2s, Array::Vec2sArrayType, 2, GL_SHORT > Vec2sArray
Definition Array:428
TemplateArray< Matrixd, Array::MatrixdArrayType, 16, GL_DOUBLE > MatrixdArray
Definition Array:457
TemplateArray< Vec3s, Array::Vec3sArrayType, 3, GL_SHORT > Vec3sArray
Definition Array:429
TemplateIndexArray< GLbyte, Array::ByteArrayType, 1, GL_BYTE > ByteArray
Definition Array:413
TemplateArray< Vec4b, Array::Vec4bArrayType, 4, GL_BYTE > Vec4bArray
Definition Array:426
Vec4f Vec4
Definition Vec4:21
TemplateArray< Vec3i, Array::Vec3iArrayType, 3, GL_INT > Vec3iArray
Definition Array:433
TemplateIndexArray< GLuint64, Array::UInt64ArrayType, 1, GL_UNSIGNED_INT64_ARB > UInt64Array
Definition Array:461
TemplateArray< Vec4s, Array::Vec4sArrayType, 4, GL_SHORT > Vec4sArray
Definition Array:430
TemplateArray< Vec3ui, Array::Vec3uiArrayType, 3, GL_UNSIGNED_INT > Vec3uiArray
Definition Array:445
TemplateArray< Vec2d, Array::Vec2dArrayType, 2, GL_DOUBLE > Vec2dArray
Definition Array:452
TemplateIndexArray< GLubyte, Array::UByteArrayType, 1, GL_UNSIGNED_BYTE > UByteArray
Definition Array:417
TemplateArray< Vec4ui, Array::Vec4uiArrayType, 4, GL_UNSIGNED_INT > Vec4uiArray
Definition Array:446
TemplateArray< Matrixf, Array::MatrixArrayType, 16, GL_FLOAT > MatrixfArray
Definition Array:456
TemplateArray< Vec4ub, Array::Vec4ubArrayType, 4, GL_UNSIGNED_BYTE > Vec4ubArray
Definition Array:438
TemplateIndexArray< GLint64, Array::Int64ArrayType, 1, GL_INT64_ARB > Int64Array
Definition Array:462
TemplateIndexArray< GLint, Array::IntArrayType, 1, GL_INT > IntArray
Definition Array:415
Definition Array:61
virtual void accept(ArrayVisitor &)=0
void setVertexBufferObject(osg::VertexBufferObject *vbo)
Set the VertexBufferObject.
Definition Array:213
virtual const char * className() const
Get the class name of this array.
virtual void accept(unsigned int index, ValueVisitor &)=0
virtual unsigned int getElementSize() const =0
virtual unsigned int getTotalDataSize() const =0
Binding
The scope of applicability of the values in this array.
Definition Array:130
@ BIND_OFF
Definition Array:132
@ BIND_UNDEFINED
Definition Array:131
@ BIND_PER_VERTEX
Definition Array:135
@ BIND_PER_PRIMITIVE_SET
Definition Array:134
@ BIND_OVERALL
Definition Array:133
Array(const Array &array, const CopyOp &copyop=CopyOp::SHALLOW_COPY)
Definition Array:146
bool getPreserveDataType() const
Get hint to ask that the array data is passed via integer or double, or normal setVertexAttribPointer...
Definition Array:206
GLenum _dataType
Definition Array:227
Array(Type arrayType=ArrayType, GLint dataSize=0, GLenum dataType=0, Binding binding=BIND_UNDEFINED)
Definition Array:138
const osg::VertexBufferObject * getVertexBufferObject() const
Get the const VertexBufferObject.
Definition Array:219
virtual const char * libraryName() const
return the name of the object's library.
Definition Array:156
virtual void accept(ConstArrayVisitor &) const =0
bool _normalize
Definition Array:229
virtual ~Array()
Definition Array:223
virtual const osg::Array * asArray() const
Definition Array:177
virtual unsigned int getNumElements() const =0
bool getNormalize() const
Get whether the array data should be normalized by OpenGL.
Definition Array:199
void setBinding(Binding binding)
Specify how this array should be passed to OpenGL.
Definition Array:189
void setPreserveDataType(bool preserve)
Set hint to ask that the array data is passed via integer or double, or normal setVertexAttribPointer...
Definition Array:203
Binding getBinding() const
Get how this array should be passed to OpenGL.
Definition Array:192
GLint getDataSize() const
Definition Array:173
virtual int compare(unsigned int lhs, unsigned int rhs) const =0
Return -1 if lhs element is less than rhs element, 0 if equal, 1 if lhs element is greater than rhs e...
void setNormalize(bool normalize)
Specify whether the array data should be normalized by OpenGL.
Definition Array:196
Type getType() const
Definition Array:172
virtual const GLvoid * getDataPointer() const =0
osg::VertexBufferObject * getVertexBufferObject()
Get the VertexBufferObject.
Definition Array:216
Type _arrayType
Definition Array:225
virtual bool isSameKindAs(const Object *obj) const
Definition Array:155
virtual void accept(unsigned int index, ConstValueVisitor &) const =0
virtual void trim()
Frees unused space on this vector - i.e.
Definition Array:210
GLenum getDataType() const
Definition Array:174
virtual const GLvoid * getDataPointer(unsigned int index) const =0
GLint _dataSize
Definition Array:226
Type
The type of data stored in this array.
Definition Array:67
@ Vec4ubArrayType
Definition Array:95
@ Vec2ArrayType
Definition Array:105
@ Vec2bArrayType
Definition Array:81
@ Vec4sArrayType
Definition Array:87
@ ShortArrayType
Definition Array:71
@ Vec3ArrayType
Definition Array:106
@ Vec3ubArrayType
Definition Array:94
@ Vec2iArrayType
Definition Array:89
@ Vec2sArrayType
Definition Array:85
@ Vec3dArrayType
Definition Array:110
@ Vec4dArrayType
Definition Array:111
@ Vec3uiArrayType
Definition Array:102
@ MatrixArrayType
Definition Array:113
@ Vec4ArrayType
Definition Array:107
@ Vec2ubArrayType
Definition Array:93
@ FloatArrayType
Definition Array:78
@ Vec3usArrayType
Definition Array:98
@ UByteArrayType
Definition Array:74
@ ByteArrayType
Definition Array:70
@ Vec4bArrayType
Definition Array:83
@ Vec3iArrayType
Definition Array:90
@ QuatArrayType
Definition Array:116
@ Vec4usArrayType
Definition Array:99
@ Vec2dArrayType
Definition Array:109
@ Vec3sArrayType
Definition Array:86
@ Vec4uiArrayType
Definition Array:103
@ UIntArrayType
Definition Array:76
@ IntArrayType
Definition Array:72
@ Vec3bArrayType
Definition Array:82
@ DoubleArrayType
Definition Array:79
@ Vec2uiArrayType
Definition Array:101
@ MatrixdArrayType
Definition Array:114
@ UInt64ArrayType
Definition Array:118
@ LastArrayType
Definition Array:121
@ Vec2usArrayType
Definition Array:97
@ Int64ArrayType
Definition Array:119
@ UShortArrayType
Definition Array:75
@ ArrayType
Definition Array:68
@ Vec4iArrayType
Definition Array:91
Binding _binding
Definition Array:228
virtual void reserveArray(unsigned int num)=0
virtual osg::Array * asArray()
Definition Array:176
bool _preserveDataType
Definition Array:230
virtual void resizeArray(unsigned int num)=0
A concrete array holding elements of type T.
Definition Array:243
virtual void accept(ConstArrayVisitor &av) const
Definition Array:705
virtual unsigned int getNumElements() const
Definition Array:308
virtual const GLvoid * getDataPointer(unsigned int index) const
Definition Array:306
TemplateArray(unsigned int no)
Definition Array:252
virtual unsigned int getTotalDataSize() const
Definition Array:307
TemplateArray(Binding binding=BIND_UNDEFINED)
Definition Array:246
TemplateArray(const TemplateArray &ta, const CopyOp &copyop=CopyOp::SHALLOW_COPY)
Definition Array:248
virtual int compare(unsigned int lhs, unsigned int rhs) const
Return -1 if lhs element is less than rhs element, 0 if equal, 1 if lhs element is greater than rhs e...
Definition Array:289
virtual const GLvoid * getDataPointer() const
Definition Array:305
virtual Object * cloneType() const
Clone the type of an object, with Object* return type.
Definition Array:280
virtual void trim()
Frees unused space on this vector - i.e.
Definition Array:299
TemplateArray & operator=(const TemplateArray &array)
Definition Array:273
virtual void accept(ArrayVisitor &av)
Definition Array:702
TemplateArray(Binding binding, unsigned int no)
Definition Array:260
virtual void resizeArray(unsigned int num)
Definition Array:310
TemplateArray(unsigned int no, const T *ptr)
Definition Array:256
virtual void reserveArray(unsigned int num)
Definition Array:309
virtual ~TemplateArray()
Definition Array:316
TemplateArray(Binding binding, unsigned int no, const T *ptr)
Definition Array:264
virtual void accept(unsigned int index, ValueVisitor &vv)
Definition Array:708
TemplateArray(InputIterator first, InputIterator last)
Definition Array:269
virtual unsigned int getElementSize() const
Definition Array:304
virtual void accept(unsigned int index, ConstValueVisitor &vv) const
Definition Array:711
virtual Object * clone(const CopyOp &copyop) const
Clone an object, with Object* return type.
Definition Array:281
IndexArray(const Array &array, const CopyOp &copyop=CopyOp::SHALLOW_COPY)
Definition Array:327
virtual ~IndexArray()
Definition Array:336
virtual unsigned int index(unsigned int pos) const =0
virtual bool isSameKindAs(const Object *obj) const
Definition Array:330
IndexArray(Type arrayType=ArrayType, GLint dataSize=0, GLenum dataType=0)
Definition Array:324
Definition Array:341
virtual const GLvoid * getDataPointer(unsigned int index) const
Definition Array:396
virtual const GLvoid * getDataPointer() const
Definition Array:395
virtual unsigned int getTotalDataSize() const
Definition Array:397
virtual unsigned int index(unsigned int pos) const
Definition Array:402
TemplateIndexArray(unsigned int no, T *ptr)
Definition Array:354
virtual void accept(unsigned int index, ValueVisitor &vv)
Definition Array:720
virtual Object * cloneType() const
Clone the type of an object, with Object* return type.
Definition Array:370
TemplateIndexArray(const TemplateIndexArray &ta, const CopyOp &copyop=CopyOp::SHALLOW_COPY)
Definition Array:346
virtual void reserveArray(unsigned int num)
Definition Array:399
TemplateIndexArray & operator=(const TemplateIndexArray &array)
Definition Array:363
virtual void resizeArray(unsigned int num)
Definition Array:400
TemplateIndexArray(InputIterator first, InputIterator last)
Definition Array:359
virtual int compare(unsigned int lhs, unsigned int rhs) const
Return -1 if lhs element is less than rhs element, 0 if equal, 1 if lhs element is greater than rhs e...
Definition Array:379
virtual Object * clone(const CopyOp &copyop) const
Clone an object, with Object* return type.
Definition Array:371
virtual void trim()
Frees unused space on this vector - i.e.
Definition Array:389
virtual ~TemplateIndexArray()
Definition Array:408
TemplateIndexArray(unsigned int no)
Definition Array:350
virtual unsigned int getElementSize() const
Definition Array:394
virtual void accept(ConstArrayVisitor &av) const
Definition Array:717
virtual void accept(unsigned int index, ConstValueVisitor &vv) const
Definition Array:723
TemplateIndexArray()
Definition Array:344
virtual void accept(ArrayVisitor &av)
Definition Array:714
virtual unsigned int getNumElements() const
Definition Array:398
Definition Array:465
virtual void apply(Vec4ubArray &)
Definition Array:498
ArrayVisitor()
Definition Array:467
virtual void apply(Vec2ubArray &)
Definition Array:496
virtual void apply(Vec3ubArray &)
Definition Array:497
virtual void apply(UShortArray &)
Definition Array:477
virtual void apply(FloatArray &)
Definition Array:480
virtual void apply(Vec4sArray &)
Definition Array:490
virtual void apply(Vec2bArray &)
Definition Array:484
virtual void apply(IntArray &)
Definition Array:474
virtual void apply(Vec3Array &)
Definition Array:509
virtual void apply(ByteArray &)
Definition Array:472
virtual void apply(UInt64Array &)
Definition Array:519
virtual void apply(MatrixdArray &)
Definition Array:517
virtual void apply(UByteArray &)
Definition Array:476
virtual void apply(Vec2dArray &)
Definition Array:512
virtual void apply(Vec4iArray &)
Definition Array:494
virtual ~ArrayVisitor()
Definition Array:468
virtual void apply(Vec4Array &)
Definition Array:510
virtual void apply(UIntArray &)
Definition Array:478
virtual void apply(Vec3uiArray &)
Definition Array:505
virtual void apply(Vec2Array &)
Definition Array:508
virtual void apply(Vec3bArray &)
Definition Array:485
virtual void apply(Vec2uiArray &)
Definition Array:504
virtual void apply(Vec3dArray &)
Definition Array:513
virtual void apply(Vec4dArray &)
Definition Array:514
virtual void apply(Vec3iArray &)
Definition Array:493
virtual void apply(Vec3usArray &)
Definition Array:501
virtual void apply(MatrixfArray &)
Definition Array:516
virtual void apply(Vec2usArray &)
Definition Array:500
virtual void apply(ShortArray &)
Definition Array:473
virtual void apply(Vec3sArray &)
Definition Array:489
virtual void apply(DoubleArray &)
Definition Array:481
virtual void apply(Vec4bArray &)
Definition Array:486
virtual void apply(Vec2iArray &)
Definition Array:492
virtual void apply(Array &)
Definition Array:470
virtual void apply(Vec4uiArray &)
Definition Array:506
virtual void apply(Vec4usArray &)
Definition Array:502
virtual void apply(Int64Array &)
Definition Array:520
virtual void apply(Vec2sArray &)
Definition Array:488
Definition Array:524
virtual void apply(const Vec4uiArray &)
Definition Array:565
virtual void apply(const Vec2ubArray &)
Definition Array:555
virtual void apply(const ShortArray &)
Definition Array:532
virtual void apply(const Array &)
Definition Array:529
virtual ~ConstArrayVisitor()
Definition Array:527
virtual void apply(const Vec2sArray &)
Definition Array:547
virtual void apply(const MatrixdArray &)
Definition Array:576
virtual void apply(const FloatArray &)
Definition Array:539
virtual void apply(const Vec3ubArray &)
Definition Array:556
virtual void apply(const Vec2iArray &)
Definition Array:551
virtual void apply(const Vec2usArray &)
Definition Array:559
virtual void apply(const MatrixfArray &)
Definition Array:575
virtual void apply(const Vec4usArray &)
Definition Array:561
virtual void apply(const ByteArray &)
Definition Array:531
virtual void apply(const UShortArray &)
Definition Array:536
virtual void apply(const Vec3uiArray &)
Definition Array:564
virtual void apply(const Vec3dArray &)
Definition Array:572
virtual void apply(const Vec4Array &)
Definition Array:569
ConstArrayVisitor()
Definition Array:526
virtual void apply(const Vec4sArray &)
Definition Array:549
virtual void apply(const Vec3usArray &)
Definition Array:560
virtual void apply(const Int64Array &)
Definition Array:579
virtual void apply(const Vec4iArray &)
Definition Array:553
virtual void apply(const Vec2uiArray &)
Definition Array:563
virtual void apply(const Vec3bArray &)
Definition Array:544
virtual void apply(const Vec4dArray &)
Definition Array:573
virtual void apply(const Vec3Array &)
Definition Array:568
virtual void apply(const UIntArray &)
Definition Array:537
virtual void apply(const Vec3iArray &)
Definition Array:552
virtual void apply(const UInt64Array &)
Definition Array:578
virtual void apply(const Vec4ubArray &)
Definition Array:557
virtual void apply(const IntArray &)
Definition Array:533
virtual void apply(const UByteArray &)
Definition Array:535
virtual void apply(const DoubleArray &)
Definition Array:540
virtual void apply(const Vec3sArray &)
Definition Array:548
virtual void apply(const Vec2bArray &)
Definition Array:543
virtual void apply(const Vec4bArray &)
Definition Array:545
virtual void apply(const Vec2Array &)
Definition Array:567
virtual void apply(const Vec2dArray &)
Definition Array:571
Definition Array:584
virtual void apply(GLushort &)
Definition Array:593
virtual void apply(Vec3us &)
Definition Array:618
virtual void apply(Vec2us &)
Definition Array:617
virtual void apply(Vec3i &)
Definition Array:610
virtual void apply(GLshort &)
Definition Array:590
virtual void apply(Vec2i &)
Definition Array:609
virtual void apply(Matrixf &)
Definition Array:633
virtual void apply(Vec4ub &)
Definition Array:615
virtual void apply(Vec4d &)
Definition Array:631
virtual void apply(Vec3b &)
Definition Array:602
virtual void apply(GLuint &)
Definition Array:595
virtual void apply(GLdouble &)
Definition Array:598
virtual void apply(GLint &)
Definition Array:591
virtual void apply(Vec4i &)
Definition Array:611
virtual void apply(Vec4us &)
Definition Array:619
virtual void apply(GLuint64 &)
Definition Array:638
ValueVisitor()
Definition Array:586
virtual void apply(Matrixd &)
Definition Array:634
virtual void apply(Vec2s &)
Definition Array:605
virtual void apply(Vec2ui &)
Definition Array:621
virtual void apply(Vec2d &)
Definition Array:629
virtual void apply(Vec3d &)
Definition Array:630
virtual void apply(Vec3ub &)
Definition Array:614
virtual void apply(Vec2 &)
Definition Array:625
virtual void apply(Vec4b &)
Definition Array:603
virtual void apply(GLint64 &)
Definition Array:639
virtual void apply(Vec3ui &)
Definition Array:622
virtual void apply(Vec4 &)
Definition Array:627
virtual void apply(Vec4s &)
Definition Array:607
virtual void apply(Quat &)
Definition Array:636
virtual void apply(Vec3 &)
Definition Array:626
virtual void apply(Vec3s &)
Definition Array:606
virtual void apply(Vec2ub &)
Definition Array:613
virtual void apply(Vec2b &)
Definition Array:601
virtual void apply(GLfloat &)
Definition Array:597
virtual ~ValueVisitor()
Definition Array:587
virtual void apply(Vec4ui &)
Definition Array:623
virtual void apply(GLbyte &)
Definition Array:589
virtual void apply(GLubyte &)
Definition Array:594
Definition Array:643
virtual void apply(const Matrixf &)
Definition Array:692
virtual void apply(const Vec4b &)
Definition Array:662
virtual void apply(const Matrixd &)
Definition Array:693
virtual void apply(const Vec3 &)
Definition Array:685
virtual void apply(const Quat &)
Definition Array:695
virtual void apply(const Vec3ub &)
Definition Array:673
virtual void apply(const GLdouble &)
Definition Array:657
virtual void apply(const Vec3ui &)
Definition Array:681
virtual void apply(const Vec2us &)
Definition Array:676
virtual void apply(const GLuint64 &)
Definition Array:697
virtual void apply(const GLushort &)
Definition Array:652
virtual void apply(const Vec2s &)
Definition Array:664
virtual void apply(const GLbyte &)
Definition Array:648
ConstValueVisitor()
Definition Array:645
virtual void apply(const Vec4ub &)
Definition Array:674
virtual void apply(const Vec2ub &)
Definition Array:672
virtual void apply(const Vec3b &)
Definition Array:661
virtual void apply(const Vec4d &)
Definition Array:690
virtual void apply(const Vec4us &)
Definition Array:678
virtual void apply(const Vec3us &)
Definition Array:677
virtual void apply(const GLfloat &)
Definition Array:656
virtual void apply(const GLubyte &)
Definition Array:653
virtual void apply(const GLuint &)
Definition Array:654
virtual void apply(const Vec2i &)
Definition Array:668
virtual void apply(const Vec3i &)
Definition Array:669
virtual void apply(const GLshort &)
Definition Array:649
virtual ~ConstValueVisitor()
Definition Array:646
virtual void apply(const Vec4i &)
Definition Array:670
virtual void apply(const Vec4 &)
Definition Array:686
virtual void apply(const Vec2 &)
Definition Array:684
virtual void apply(const Vec3d &)
Definition Array:689
virtual void apply(const Vec2ui &)
Definition Array:680
virtual void apply(const Vec2d &)
Definition Array:688
virtual void apply(const GLint &)
Definition Array:650
virtual void apply(const Vec2b &)
Definition Array:660
virtual void apply(const Vec3s &)
Definition Array:665
virtual void apply(const GLint64 &)
Definition Array:698
virtual void apply(const Vec4s &)
Definition Array:666
virtual void apply(const Vec4ui &)
Definition Array:682
BufferData()
Definition BufferObject:498
osg::ref_ptr< BufferObject > _bufferObject
Definition BufferObject:590
void setBufferObject(BufferObject *bufferObject)
Definition BufferObject:599
Copy Op(erator) used to control whether shallow or deep copy is used during copy construction and clo...
Definition CopyOp:41
@ SHALLOW_COPY
Definition CopyOp:47
Definition Matrixd:27
Definition Matrixf:27
size_type size() const
Definition MixinVector:92
const_iterator end() const
Definition MixinVector:99
void resize(size_type new_size, const value_type &fill_value=value_type())
Definition MixinVector:85
void assign(size_type count, const value_type &value)
Definition MixinVector:113
const_reference front() const
Definition MixinVector:138
void reserve(size_type new_capacity)
Definition MixinVector:86
const_iterator begin() const
Definition MixinVector:97
MixinVector()
Definition MixinVector:45
bool empty() const
Definition MixinVector:91
Base class/standard interface for objects which require IO support, cloning and reference counting.
Definition Object:61
A quaternion class.
Definition Quat:30
General purpose float triple.
Definition Vec2b:26
General purpose double pair, uses include representation of texture coordinates.
Definition Vec2d:29
General purpose integer pair.
Definition Vec2i:22
Definition Vec2s:20
General purpose unsigned byte pair.
Definition Vec2ub:22
General purpose integer pair.
Definition Vec2ui:22
Definition Vec2us:20
General purpose float triple.
Definition Vec3b:26
General purpose double triple for use as vertices, vectors and normals.
Definition Vec3d:30
General purpose integer triple.
Definition Vec3i:22
Definition Vec3s:20
General purpose float triple.
Definition Vec3ub:26
General purpose integer triple.
Definition Vec3ui:22
Definition Vec3us:20
General purpose float triple.
Definition Vec4b:26
General purpose double quad.
Definition Vec4d:29
General purpose integer quad.
Definition Vec4i:22
General purpose float quad.
Definition Vec4s:26
General purpose float quad.
Definition Vec4ub:28
General purpose integer quad.
Definition Vec4ui:22
General purpose float quad.
Definition Vec4us:26
#define NULL
Definition Export:55
#define OSG_EXPORT
Definition Export:39

osg logo
Generated at Wed Jul 23 2025 00:00:00 for the OpenSceneGraph by doxygen 1.14.0.