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
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
\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