From 51ae495c4ad74d4df19534bf2f16b7a469c24bc5 Mon Sep 17 00:00:00 2001 From: paradust7 <102263465+paradust7@users.noreply.github.com> Date: Wed, 11 May 2022 04:25:50 -0700 Subject: [PATCH] Remove extra memcpy in ogles2 driver --- source/Irrlicht/COGLES2Driver.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/source/Irrlicht/COGLES2Driver.cpp b/source/Irrlicht/COGLES2Driver.cpp index 14e28c21..57145aab 100644 --- a/source/Irrlicht/COGLES2Driver.cpp +++ b/source/Irrlicht/COGLES2Driver.cpp @@ -441,9 +441,8 @@ COGLES2Driver::~COGLES2Driver() const E_VERTEX_TYPE vType = mb->getVertexType(); const u32 vertexSize = getVertexPitchFromType(vType); - //buffer vertex data, and convert colours... - core::array buffer(vertexSize * vertexCount); - memcpy(buffer.pointer(), vertices, vertexSize * vertexCount); + const void *buffer = vertices; + size_t bufferSize = vertexSize * vertexCount; //get or create buffer bool newBuffer = false; @@ -453,7 +452,7 @@ COGLES2Driver::~COGLES2Driver() if (!HWBuffer->vbo_verticesID) return false; newBuffer = true; } - else if (HWBuffer->vbo_verticesSize < vertexCount*vertexSize) + else if (HWBuffer->vbo_verticesSize < bufferSize) { newBuffer = true; } @@ -462,15 +461,15 @@ COGLES2Driver::~COGLES2Driver() // copy data to graphics card if (!newBuffer) - glBufferSubData(GL_ARRAY_BUFFER, 0, vertexCount * vertexSize, buffer.const_pointer()); + glBufferSubData(GL_ARRAY_BUFFER, 0, bufferSize, buffer); else { - HWBuffer->vbo_verticesSize = vertexCount * vertexSize; + HWBuffer->vbo_verticesSize = bufferSize; if (HWBuffer->Mapped_Vertex == scene::EHM_STATIC) - glBufferData(GL_ARRAY_BUFFER, vertexCount * vertexSize, buffer.const_pointer(), GL_STATIC_DRAW); + glBufferData(GL_ARRAY_BUFFER, bufferSize, buffer, GL_STATIC_DRAW); else - glBufferData(GL_ARRAY_BUFFER, vertexCount * vertexSize, buffer.const_pointer(), GL_DYNAMIC_DRAW); + glBufferData(GL_ARRAY_BUFFER, bufferSize, buffer, GL_DYNAMIC_DRAW); } glBindBuffer(GL_ARRAY_BUFFER, 0);