mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Handle vertex & index VBOs separately in GL drivers
This commit is contained in:
parent
be9aa19208
commit
6b7fc1e9fe
7 changed files with 346 additions and 283 deletions
|
@ -46,16 +46,11 @@ public:
|
|||
|
||||
struct SHWBufferLink_opengl : public SHWBufferLink
|
||||
{
|
||||
SHWBufferLink_opengl(const scene::IMeshBuffer *meshBuffer) :
|
||||
SHWBufferLink(meshBuffer), vbo_verticesID(0), vbo_indicesID(0), vbo_verticesSize(0), vbo_indicesSize(0)
|
||||
{
|
||||
}
|
||||
SHWBufferLink_opengl(const scene::IVertexBuffer *vb) : SHWBufferLink(vb) {}
|
||||
SHWBufferLink_opengl(const scene::IIndexBuffer *ib) : SHWBufferLink(ib) {}
|
||||
|
||||
u32 vbo_verticesID; // tmp
|
||||
u32 vbo_indicesID; // tmp
|
||||
|
||||
u32 vbo_verticesSize; // tmp
|
||||
u32 vbo_indicesSize; // tmp
|
||||
GLuint vbo_ID = 0;
|
||||
u32 vbo_Size = 0;
|
||||
};
|
||||
|
||||
bool updateVertexHardwareBuffer(SHWBufferLink_opengl *HWBuffer);
|
||||
|
@ -64,14 +59,18 @@ public:
|
|||
//! updates hardware buffer if needed
|
||||
bool updateHardwareBuffer(SHWBufferLink *HWBuffer) override;
|
||||
|
||||
//! Create hardware buffer from mesh
|
||||
SHWBufferLink *createHardwareBuffer(const scene::IMeshBuffer *mb) override;
|
||||
//! Create hardware buffer from vertex buffer
|
||||
SHWBufferLink *createHardwareBuffer(const scene::IVertexBuffer *vb) override;
|
||||
|
||||
//! Create hardware buffer from index buffer
|
||||
SHWBufferLink *createHardwareBuffer(const scene::IIndexBuffer *ib) override;
|
||||
|
||||
//! Delete hardware buffer (only some drivers can)
|
||||
void deleteHardwareBuffer(SHWBufferLink *HWBuffer) override;
|
||||
|
||||
//! Draw hardware buffer
|
||||
void drawHardwareBuffer(SHWBufferLink *HWBuffer) override;
|
||||
void drawBuffers(const scene::IVertexBuffer *vb,
|
||||
const scene::IIndexBuffer *ib, u32 primCount,
|
||||
scene::E_PRIMITIVE_TYPE pType = scene::EPT_TRIANGLES) override;
|
||||
|
||||
IRenderTarget *addRenderTarget() override;
|
||||
|
||||
|
@ -291,10 +290,7 @@ protected:
|
|||
LockRenderStateMode = false;
|
||||
}
|
||||
|
||||
void draw2D3DVertexPrimitiveList(const void *vertices,
|
||||
u32 vertexCount, const void *indexList, u32 primitiveCount,
|
||||
E_VERTEX_TYPE vType, scene::E_PRIMITIVE_TYPE pType,
|
||||
E_INDEX_TYPE iType, bool is3D);
|
||||
bool updateHardwareBuffer(SHWBufferLink_opengl *b, const void *buffer, size_t bufferSize, scene::E_HARDWARE_MAPPING hint);
|
||||
|
||||
void createMaterialRenderers();
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue