irrlicht/include/IIndexBuffer.h
cutealien 1d58677e18 Clean up include dependencies in public headers
Removing includes which were not needed by headers
Note that if you include those headers directly (instead of including irrlicht.h) you may have to add some new includes now.
Thought I generally tried to avoid removing headers where it leads to too much changes in user-code
Reason was mainly that IntelliSense in VisualStudio 17.7 added a new feature which shows those unused headers :)
Has to be used a bit careful as it doesn't know about defines and other platforms
And I only did clean up public headers so far (will probably do some more later or another time)

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6524 dfc29bdd-3216-0410-991c-e03cc46cb475
2023-08-13 15:31:42 +00:00

79 lines
2.4 KiB
C++

// 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