mirror of
https://github.com/minetest/irrlicht.git
synced 2024-12-26 10:40:31 +01:00
1d58677e18
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
79 lines
2.4 KiB
C++
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
|