// 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;
        }
示例#2
0
        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;
            }
        }