用于.NET的3D图形库

时间:2013-02-20 18:53:03

标签: c# graphics 3d directx

我想学习为Windows 7 /桌面制作简单的3D应用程序。就此而言,我指的是在3D空间中移动的球体,三角形或像素。它还不一定非常复杂。 为此,我想在.NET中使用C#语言(Java / C ++是我的第二优先)。

我知道互联网已经多次询问过这个问题,但我觉得很多问题已经过时,很多API都已弃用,教程太旧了。

我正在考虑学习XNA,但后来我了解到Microsoft does not plan to develop and support it anymore. SharpDX似乎也是一个很好的方法,但这似乎是针对Windows应用商店和手机应用。

在互联网上查看时,Managed DirectX看起来正是我所寻找的(语法,复杂性),但同样,过于弃用供我使用。

请您指导我应该学习什么来创建简单而可靠的3D应用程序?

3 个答案:

答案 0 :(得分:8)

看看SlimDX。它是DirectX(DirectX 11)的开源免费托管库。每个版本都与DirectX版本一致,因此大部分时间它都是最新版本。我已经习惯了它,很容易上手。 Here (scroll down)与您提到的其他可能性进行了比较。

答案 1 :(得分:5)

最简单的可能就是使用WPF 3D。这是一个保留模式的图形系统,所以如果你没有巨大的需求(即:效果的特殊着色器等),它很容易直接设置和使用。

否则,更精细的3D系统(如XNA)可能更合适。这将是更多的设置工作,但给你更多的控制。

  1. Tutorial 1: Displaying a 3D Model on the Screen
  2. WPF
  3. XNA

答案 2 :(得分:4)

在OpenGL世界中,我一直在使用OpenTK。我必须在C#的现有代码之上构建,以显示平面几何对象,而不会出现阴影和逼真的效果。

以下是一个例子:

render

从代码生成:

void InitModels()
{
    Scene.CoordinateSystem cs1 = new Scene.CoordinateSystem(world.Ground)
    {
        DrawSize = 1,
        Visible = false
    };
    Scene.CoordinateSystem cs2 = new Scene.CoordinateSystem(world.Ground, 0.6 * vec3.J)
    {
        DrawSize = 0.5,
        Orientation = rot3.RotateXDegrees(-15)
    };
    Scene.Cube cube = new Scene.Cube(cs1)
    {
        CubeSize = 0.5
    };
    cs2.AddPoint(new point3(vec3.O,1), Color.Firebrick, 15);
    var line = cs2.AddLine(new line3(-vec3.I, vec3.I), 20, Color.SlateGray, 2);
    line.SetPattern(0xFF0F, GeometryTest.Scene.Stripple.Scale2);

    cube.BindTexture(5, GeometryTest.Properties.Resources.julia, true);
    cube.AddText(3, "OpenTK 1.0", Color.DarkMagenta, 0.5f, 0.5f, 1.0f);

}