C# 通过渲染三角形绘制Win2D图形-性能问题

C# 通过渲染三角形绘制Win2D图形-性能问题,c#,performance,drawing,polygon,win2d,C#,Performance,Drawing,Polygon,Win2d,我想用Win2D库创建图形。我已经完成了,但是当我想重新绘制更大的图形时,我遇到了一些性能问题。 以下是我用于显示图形的解决方案: private Microsoft.Graphics.Canvas.Numerics.Vector2[] trianglePoints = new Microsoft.Graphics.Canvas.Numerics.Vector2[3]; private void RenderTriangle(List<Triangle> TriangleList)

我想用Win2D库创建图形。我已经完成了,但是当我想重新绘制更大的图形时,我遇到了一些性能问题。 以下是我用于显示图形的解决方案:

private Microsoft.Graphics.Canvas.Numerics.Vector2[] trianglePoints = new Microsoft.Graphics.Canvas.Numerics.Vector2[3];

private void RenderTriangle(List<Triangle> TriangleList)
{
            using (var drawSession = renderTarget.CreateDrawingSession())
            {
                CanvasPathBuilder pathBuilder = new CanvasPathBuilder(Win2DCanvas);

                foreach (Triangle triangle in TriangleList)
                {
                    trianglePoints[0] = triangle.vertexA;
                    trianglePoints[1] = triangle.vertexB;
                    trianglePoints[2] = triangle.vertexC;

                    triangleGeometry = CanvasGeometry.CreatePolygon(Win2DCanvas, trianglePoints);

                    pathBuilder.AddGeometry(triangleGeometry);

                }
                drawSession.FillGeometry(CanvasGeometry.CreatePath(pathBuilder), color)
        }
}
创建大约100000个多边形需要大约6000毫秒,这是难以置信的长时间

您知道在Win2D中渲染大量三角形的更快方法吗

我应该在C++中创建多边形并把它们包到C或其他东西吗?


谢谢您的重播。

您能保留一份三角几何变量列表,并仅在变量发生变化时更新它们吗?因此,您的循环将只是针对list addgeometry(processedtriangle)中的每个processedtriangle,这将不起作用。问题在于方法
CreatePolygon
需要很长时间。但我的观点是避免不必要地调用它…但是这个循环以增量方式显示三角形,没有不必要的三角形。每个多边形的颜色都一样吗?你能保留一个三角形几何变量的列表,并且只在它们发生变化时更新它们吗?因此,您的循环将只是针对list addgeometry(processedtriangle)中的每个processedtriangle,这将不起作用。问题在于方法
CreatePolygon
需要很长的时间。但我的观点是避免不必要地调用它…但是这个循环以增量方式显示三角形,没有不必要的三角形。每个多边形的颜色都一样吗?
triangleGeometry = CanvasGeometry.CreatePolygon(Win2DCanvas, trianglePoints);