]> git.lizzy.rs Git - irrlicht.git/commitdiff
Remove extra memcpy in ogles2 driver
authorparadust7 <102263465+paradust7@users.noreply.github.com>
Wed, 11 May 2022 11:25:50 +0000 (04:25 -0700)
committerGitHub <noreply@github.com>
Wed, 11 May 2022 11:25:50 +0000 (13:25 +0200)
source/Irrlicht/COGLES2Driver.cpp

index 14e28c21391cd972ee2c7066da472df5310df1a3..57145aab6d60a79d8f0a015ff8a756e421c78227 100644 (file)
@@ -441,9 +441,8 @@ COGLES2Driver::~COGLES2Driver()
                const E_VERTEX_TYPE vType = mb->getVertexType();\r
                const u32 vertexSize = getVertexPitchFromType(vType);\r
 \r
-               //buffer vertex data, and convert colours...\r
-               core::array<c8> buffer(vertexSize * vertexCount);\r
-               memcpy(buffer.pointer(), vertices, vertexSize * vertexCount);\r
+               const void *buffer = vertices;\r
+               size_t bufferSize = vertexSize * vertexCount;\r
 \r
                //get or create buffer\r
                bool newBuffer = false;\r
@@ -453,7 +452,7 @@ COGLES2Driver::~COGLES2Driver()
                        if (!HWBuffer->vbo_verticesID) return false;\r
                        newBuffer = true;\r
                }\r
-               else if (HWBuffer->vbo_verticesSize < vertexCount*vertexSize)\r
+               else if (HWBuffer->vbo_verticesSize < bufferSize)\r
                {\r
                        newBuffer = true;\r
                }\r
@@ -462,15 +461,15 @@ COGLES2Driver::~COGLES2Driver()
 \r
                // copy data to graphics card\r
                if (!newBuffer)\r
-                       glBufferSubData(GL_ARRAY_BUFFER, 0, vertexCount * vertexSize, buffer.const_pointer());\r
+                       glBufferSubData(GL_ARRAY_BUFFER, 0, bufferSize, buffer);\r
                else\r
                {\r
-                       HWBuffer->vbo_verticesSize = vertexCount * vertexSize;\r
+                       HWBuffer->vbo_verticesSize = bufferSize;\r
 \r
                        if (HWBuffer->Mapped_Vertex == scene::EHM_STATIC)\r
-                               glBufferData(GL_ARRAY_BUFFER, vertexCount * vertexSize, buffer.const_pointer(), GL_STATIC_DRAW);\r
+                               glBufferData(GL_ARRAY_BUFFER, bufferSize, buffer, GL_STATIC_DRAW);\r
                        else\r
-                               glBufferData(GL_ARRAY_BUFFER, vertexCount * vertexSize, buffer.const_pointer(), GL_DYNAMIC_DRAW);\r
+                               glBufferData(GL_ARRAY_BUFFER, bufferSize, buffer, GL_DYNAMIC_DRAW);\r
                }\r
 \r
                glBindBuffer(GL_ARRAY_BUFFER, 0);\r