// used to update a vertex internal void setVertex(int index, QuickGUIVertex v) { if (index >= VERTEX_PER_QUAD) { return; } mVertices[index].pos = v.pos; mVertices[index].color = v.color; mVertices[index].uv = v.uv; }
private void _populateVertexBuffer() { unsafe { // lock the buffer if we haven't already. if (mVertexBufferPtr == null) { // Note that locking with HBL_DISCARD will give us new, blank memory. mVertexBufferPtr = (QuickGUIVertex *)mVertexBuffer.Lock(HardwareVertexBuffer.LockOptions.HBL_DISCARD); } int vertexCount = 0; foreach (QuickGUIQuad q in mRenderList) { // for each quad, add its 6 vertices to the buffer for (int vertIndex = 0; vertIndex < QuickGUIQuad.VERTEX_PER_QUAD; ++vertIndex) { QuickGUIVertex v = q.getVertex(vertIndex); mVertexBufferPtr[vertIndex].pos = v.pos; mRenderSystem.ConvertColourValue(ColourValue.White, out mVertexBufferPtr[vertIndex].color); mVertexBufferPtr[vertIndex].uv = v.uv; ++vertexCount; } mVertexBufferPtr += QuickGUIQuad.VERTEX_PER_QUAD; } mVertexBuffer.Unlock(); mVertexBufferPtr = null; mVertexBufferUsage = vertexCount; mRenderListDirty = false; } }