12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- // Copyright (C) 2008-2012 Nikolaus Gebhardt
- // This file is part of the "Irrlicht Engine".
- // For conditions of distribution and use, see copyright notice in irrlicht.h
- #ifndef IRR_I_INDEX_BUFFER_H_INCLUDED
- #define IRR_I_INDEX_BUFFER_H_INCLUDED
- #include "IReferenceCounted.h"
- #include "EHardwareBufferFlags.h"
- #include "SVertexIndex.h"
- namespace irr
- {
- namespace scene
- {
- class IIndexBuffer : public virtual IReferenceCounted
- {
- public:
- //! Pointer to first element
- virtual void* getData() =0;
- //! Const pointer to first element
- virtual const void* getData() const =0;
- //! Same as getData(), just closer to core::array interface
- void* pointer() { return getData(); }
- virtual video::E_INDEX_TYPE getType() const =0;
- //! Change between 16 and 32 bit indices.
- /** This copies all indices to a new buffer of corresponding type.
- Be careful - going from 32 to 16 bit will only work correctly
- if none of your indices is larger than 16 bit. */
- virtual void setType(video::E_INDEX_TYPE IndexType) =0;
- //! Number of bytes per element
- virtual u32 stride() const =0;
- //! Number of elements
- virtual u32 size() const =0;
- //! Add value to end. Note that for 16 bit index types values shouldn't be larger than u16
- virtual void push_back(u32 value) =0;
- //! Set value at index. Note that for 16 bit index types values shouldn't be larger than u16
- /** Buffer must be already large enough. This is basically the non const version of operator [] */
- virtual void setValue(u32 index, u32 value) =0;
- //! Access element value at given index
- virtual u32 operator [](u32 index) const =0;
- virtual u32 getLast() =0;
- virtual void set_used(u32 usedNow) =0;
- virtual void reallocate(u32 new_size, bool canShrink=true) =0;
- virtual u32 allocated_size() const=0;
- //! get the current hardware mapping hint
- virtual E_HARDWARE_MAPPING getHardwareMappingHint() const =0;
- //! set the hardware mapping hint, for driver
- virtual void setHardwareMappingHint( E_HARDWARE_MAPPING NewMappingHint ) =0;
- //! flags the meshbuffer as changed, reloads hardware buffers
- virtual void setDirty() = 0;
- //! Get the currently used ID for identification of changes.
- /** This shouldn't be used for anything outside the VideoDriver. */
- virtual u32 getChangedID() const = 0;
- };
- } // end namespace scene
- } // end namespace irr
- #endif
|