移植旧的 MDX 代码

Porting old MDX code

我正在使用 Direct3D9 程序集将一些旧的 MDX 代码移植到 SharpDX。

我能够 'convert' SharpDX 的大部分代码,但我遇到了以下问题:

Mesh result = Mesh.Cylinder(_device, _arrowRadius1, _arrowRadius2, _arrowLength, _arrowNumberOfSlices, _arrowNumberOfStacks);

Mesh result = Mesh.Box(_device, _axisLength, _axisThick, _axisThick);

Mesh.TextFromFont(_device, new System.Drawing.Font("Berlin Sans FB", 12), text, 5f, 0.2f);

网格 class 存在但不包含 Cylinder 或 Box 方法。我浏览了大量文档,但找不到解决方案。

除了 Mesh class 的问题外,我在 SharpDX 中找不到匹配的 classes 和方法:

using (Surface backbuffer = _device.GetBackBuffer(0, 0))
{
    GraphicsStream stream = SurfaceLoader.SaveToStream(ImageFileFormat.Bmp, backbuffer);
    return new Bitmap(stream);
}

GraphicStreamSurfaceLoader 不存在。

我在从旧的托管 Microsoft.DirectX 到 SharpDx9 时遇到了类似的问题。 对于 Meshes,我们必须实现我们自己的 Mesh classes,因为 SharpDx.Mesh 中没有像圆柱体、球体或盒子这样的原语(我猜它只是一个模拟 class)。 但是对于 SurfaceLoader,请检查 Surface class 本身,它具有可能符合您需求的静态方法。例如:

Surface.ToStream()