public void DrawBackground() { IStyle style = currentElement.style; if (style.backgroundColor != Color.clear) { var painterParams = RectStylePainterParameters.GetDefault(currentElement); painterParams.border.SetWidth(0.0f); DrawRect(painterParams); } }
public void DrawRect(RectStylePainterParameters painterParams) { var rect = painterParams.rect; var color = painterParams.color; var m = currentElement.worldTransform; m_VertexData[m_VertexOffset + 0] = new Vertex() { Position = m.MultiplyPoint(new Vector2(rect.x, rect.y)), Tint = color, UV = Vector2.zero, TransformID = 0.0f, Flags = 0.0f }; m_VertexData[m_VertexOffset + 1] = new Vertex() { Position = m.MultiplyPoint(new Vector2(rect.x + rect.width, rect.y)), Tint = color, UV = Vector2.zero, TransformID = 0.0f, Flags = 0.0f }; m_VertexData[m_VertexOffset + 2] = new Vertex() { Position = m.MultiplyPoint(new Vector2(rect.x, rect.y + rect.height)), Tint = color, UV = Vector2.zero, TransformID = 0.0f, Flags = 0.0f }; m_VertexData[m_VertexOffset + 3] = new Vertex() { Position = m.MultiplyPoint(new Vector2(rect.x + rect.width, rect.y + rect.height)), Tint = color, UV = Vector2.zero, TransformID = 0.0f, Flags = 0.0f }; int vertexStride = m_VertexGPUBuffer.ElementStride; m_VertexUpdateRanges[m_VertexUpdateOffset] = new GfxUpdateBufferRange() { source = new UIntPtr(m_VertexData.Slice(m_VertexOffset, 4).GetUnsafeReadOnlyPtr()), offsetFromWriteStart = 0, size = 4 * (UInt32)vertexStride }; m_VertexGPUBuffer.UpdateRanges(m_VertexUpdateRanges.Slice(m_VertexUpdateOffset, 1), m_VertexOffset * vertexStride, (m_VertexOffset + 4) * vertexStride); ++m_VertexUpdateOffset; m_IndexData[m_IndexOffset + 0] = (UInt16)(m_VertexOffset + 0); m_IndexData[m_IndexOffset + 1] = (UInt16)(m_VertexOffset + 1); m_IndexData[m_IndexOffset + 2] = (UInt16)(m_VertexOffset + 2); m_IndexData[m_IndexOffset + 3] = (UInt16)(m_VertexOffset + 2); m_IndexData[m_IndexOffset + 4] = (UInt16)(m_VertexOffset + 1); m_IndexData[m_IndexOffset + 5] = (UInt16)(m_VertexOffset + 3); int indexStride = m_IndexGPUBuffer.ElementStride; m_IndexUpdateRanges[m_IndexUpdateOffset] = new GfxUpdateBufferRange() { source = new UIntPtr(m_IndexData.Slice(m_IndexOffset, 6).GetUnsafeReadOnlyPtr()), offsetFromWriteStart = 0, size = 6 * (UInt32)indexStride }; m_IndexGPUBuffer.UpdateRanges(m_IndexUpdateRanges.Slice(m_IndexUpdateOffset, 1), m_IndexOffset * indexStride, (m_IndexOffset + 6) * indexStride); ++m_IndexUpdateOffset; var drawRange = m_DrawRanges[m_DrawRangeCount]; drawRange.firstIndex = m_IndexOffset; drawRange.indexCount = 6; drawRange.minIndexVal = m_VertexOffset; drawRange.vertsReferenced = 4; m_DrawRanges[m_DrawRangeCount++] = drawRange; m_VertexOffset += 4; m_IndexOffset += 6; }