У меня проблема с ожиданием ваших предложений о производительности WPF 3D. Он работает довольно хорошо с небольшой шириной и длиной, но с шириной и длиной около 949x825. При измерении с помощью секундомера вся реализация в коде c# занимает всего около 0,6 секунд, но для его отображения требуется около 6 секунд. 3D-изображения на экране и при использовании мыши для увеличения или поворота 3D-изображения это очень медленно. Есть ли способ повысить производительность?
Код в C#:
// **Test with width = 949 and length = 825. It's very slow**
// Make a mesh to hold the surface.
MeshGeometry3D mesh = new MeshGeometry3D();
Int32Collection triangleIndices = new Int32Collection();
Point3DCollection positions = new Point3DCollection();
//defining point and triangles
int ind1 = 0;
int ind2 = 0;
for (var z = 0; z < length; z++)
{
for (var x = 0; x < width; x++)
{
var point = new Point3D(x, map[z, x] * ImageConstants.YScale, z);
positions.Add(point);
if (z < length - 1 &&
x < width - 1)
{
ind1 = x + z * width;
ind2 = ind1 + width;
//first triangle
triangleIndices.Add(ind1);
triangleIndices.Add(ind2);
triangleIndices.Add(ind2 + 1);
//second triangle
triangleIndices.Add(ind1);
triangleIndices.Add(ind2 + 1);
triangleIndices.Add(ind1 + 1);
}
}
}
mesh.Positions = positions;
mesh.TriangleIndices = triangleIndices;
В Xaml:
<Grid Name="mainGrid" Background="Black" MouseWheel="OnMouseWheel" MouseDown="OnMouseDown">
<Viewport3D Name="MainViewport3D">
<Viewport3D.Camera>
<PerspectiveCamera x:Name="MainPerspectiveCamera" FieldOfView="35" />
</Viewport3D.Camera>
<ModelVisual3D>
<ModelVisual3D.Content>
<Model3DGroup x:Name="MainModel3DGroup">
</Model3DGroup>
</ModelVisual3D.Content>
</ModelVisual3D>
</Viewport3D>
</Grid>
Большое спасибо.