mirror of
https://github.com/luanti-org/luanti.git
synced 2025-08-21 18:11:11 +00:00
Split CVertexBuffer from CMeshBuffer
This commit is contained in:
parent
538b8b9b34
commit
5d6e15bc49
10 changed files with 246 additions and 78 deletions
|
@ -17,24 +17,47 @@ namespace scene
|
|||
class IVertexBuffer : public virtual IReferenceCounted
|
||||
{
|
||||
public:
|
||||
virtual void *getData() = 0;
|
||||
//! Get type of vertex data which is stored in this meshbuffer.
|
||||
/** \return Vertex type of this buffer. */
|
||||
virtual video::E_VERTEX_TYPE getType() const = 0;
|
||||
virtual void setType(video::E_VERTEX_TYPE vertexType) = 0;
|
||||
virtual u32 stride() const = 0;
|
||||
virtual u32 size() const = 0;
|
||||
virtual void push_back(const video::S3DVertex &element) = 0;
|
||||
virtual video::S3DVertex &operator[](const u32 index) const = 0;
|
||||
virtual video::S3DVertex &getLast() = 0;
|
||||
virtual void set_used(u32 usedNow) = 0;
|
||||
virtual void reallocate(u32 new_size) = 0;
|
||||
virtual u32 allocated_size() const = 0;
|
||||
virtual video::S3DVertex *pointer() = 0;
|
||||
|
||||
//! Get access to vertex data. The data is an array of vertices.
|
||||
/** Which vertex type is used can be determined by getVertexType().
|
||||
\return Pointer to array of vertices. */
|
||||
virtual const void *getData() const = 0;
|
||||
|
||||
//! Get access to vertex data. The data is an array of vertices.
|
||||
/** Which vertex type is used can be determined by getVertexType().
|
||||
\return Pointer to array of vertices. */
|
||||
virtual void *getData() = 0;
|
||||
|
||||
//! Get amount of vertices in meshbuffer.
|
||||
/** \return Number of vertices in this buffer. */
|
||||
virtual u32 getCount() const = 0;
|
||||
|
||||
//! returns position of vertex i
|
||||
virtual const core::vector3df &getPosition(u32 i) const = 0;
|
||||
|
||||
//! returns position of vertex i
|
||||
virtual core::vector3df &getPosition(u32 i) = 0;
|
||||
|
||||
//! returns normal of vertex i
|
||||
virtual const core::vector3df &getNormal(u32 i) const = 0;
|
||||
|
||||
//! returns normal of vertex i
|
||||
virtual core::vector3df &getNormal(u32 i) = 0;
|
||||
|
||||
//! returns texture coord of vertex i
|
||||
virtual const core::vector2df &getTCoords(u32 i) const = 0;
|
||||
|
||||
//! returns texture coord of vertex i
|
||||
virtual core::vector2df &getTCoords(u32 i) = 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;
|
||||
virtual void setHardwareMappingHint(E_HARDWARE_MAPPING newMappingHint) = 0;
|
||||
|
||||
//! flags the meshbuffer as changed, reloads hardware buffers
|
||||
virtual void setDirty() = 0;
|
||||
|
@ -42,6 +65,10 @@ public:
|
|||
//! Get the currently used ID for identification of changes.
|
||||
/** This shouldn't be used for anything outside the VideoDriver. */
|
||||
virtual u32 getChangedID() const = 0;
|
||||
|
||||
//! Used by the VideoDriver to remember the buffer link.
|
||||
virtual void setHWBuffer(void *ptr) const = 0;
|
||||
virtual void *getHWBuffer() const = 0;
|
||||
};
|
||||
|
||||
} // end namespace scene
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue