Ejemplo n.º 1
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;
            }
        }